Заметки сисадмина

Docker. Часть 2: контейнеры

Введение В первой части статьи вы познакомились с Docker и установили его. Пришло время поближе познакомится с контейнерами.

Docker. Часть 2: контейнеры

Загрузка образов и запуск контейнеров Для запуска контейнера с приложением, вам понадобится образ этого приложения.
Разберем пример с образом NGINX из официального репозитория.
Чтобы загрузить образ из репозитория на сервер – выполните следующую команду:

$ sudo docker pull nginx

Так же можно указать точную версию образа. Например, для загрузки nginx версии 1.12.1. Выполните команду:

$ sudo docker pull nginx:1.12.1

Запустите контейнер командой:

$ sudo docker run -d --name server_app -p 4000:80 nginx

Рассмотрим подробнее данную команду.
docker run nginx – запускает контейнер на основе образа nginx.

Параметры:

  • --name – задает имя контейнера
  • -p – сопоставляет порт сервера с портом контейнера. В данном примере, NGINX, запущенный в контейнере на порту 80, будет доступен при обращении к хосту на 4000 порт.
  • -d – говорит о том, что контейнер будет запущен в отдельном (фоновом) режиме.
Просмотреть информацию о запущенных контейнерах можно командой:

$ sudo docker container ps

Откройте браузер с адресом http://localhost:4000 или используйте curl. Вы должны увидеть сообщение "Welcome to nginx!..".

Создание приложения Для примера создадим веб-приложение на Python, которое будет работать внутри контейнера. Если раньше для запуска приложения вам нужно было устанавливать Python и все зависимости локально, то сейчас всё будет работать внутри контейнера.

Создайте каталог с 2 файлами requirements.txt и app.py.
requirements.txt

Flask


app.py
from flask import Flask

app = Flask(__name__)

@app.route("/")
def hello():
return "Hello World!"

if __name__ == "__main__":
app.run(host=’ 0.0.0.0’ , port=80)


Обратите внимание, что приложение должно быть запущено на хосте 0.0.0.0, чтобы оно было доступно за пределами контейнера.

Теперь создайте в этом же каталоге файл Dockerfile, который будет описывать создаваемый нами образ.
Dockerfile

# Взять за основу нашего образа официальный образ Python 3.6.2
FROM python:3.6.2

# Определить рабочую директорию
WORKDIR /usr/app

# Скопировать все содержимое текущей директории в директорию /usr/app
# внутри контейнера
ADD . /usr/app

# Запустить установку зависимостей для приложения
RUN pip install -r requirements.txt

# Сделать порт 80 доступным за пределами контейнера
EXPOSE 80

# Запустить приложение после запуска контейнера
CMD ["python", "app.py"]


Создание образа Создайте образ с именем flaskapp следующей командой:

$ sudo docker build -t flaskapp .

Теперь ваш образ собран и находится в локальном репозитории. Выполните следующую команду, чтобы увидеть список образов:

$ sudo docker image ls

Теперь запустите контейнер с приложением:

$ sudo docker run -d --name flaskapp -p 4000:80 flaskapp

Откройте URL http://localhost:4000 в браузере или используйте curl, чтобы убедиться, что приложение работает.
Для остановки контейнера выполните:

$ sudo docker stop flaskapp

Чтобы снова запустить остановленный контейнер – выполните команду:

$ sudo docker start flaskapp

А для того, чтобы удалить контейнер:

$ sudo docker rm flaskapp

Заключение Теперь у вас есть основные понятия о том, как работать с контейнерами и создавать свои образы.

Поделиться
Комментарии
Максим Орлов

Ваш покорный слуга - компьютерщик широкого профиля: системный администратор, вебмастер, интернет-маркетолог и много чего кто. Вместе с Вами, если Вы конечно не против, разовьем из обычного блога крутой технический комплекс.

Оставить комментарий

Ваш Email адрес не будет опубликован. Все обязательные поля обозначены *