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

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

Загрузка образов и запуск контейнеров
Для запуска контейнера с приложением, вам понадобится образ этого приложения.
Разберем пример с образом 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

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

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *