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