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.

Параметры:

Просмотреть информацию о запущенных контейнерах можно командой:

$ 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

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

Категории