Контейнер docker

Контейнер Docker представляет собой инсталляцию того или иного docker-образа на файловую систему хоста. Если образ напоминает iso-образ ОС или дистрибутив ПО, то контейнер – это результат развёртывания этого ПО на машине. Будучи развёрнутым, это ПО может быть запущено или остановлено. Из одного и того же образа может быть развёрнуто несколько контейнеров (с различными настройками), у каждого из которых будет своё имя и каждый из которых можно будет запускать и останавливать независимо.

Если обычное ПО, будучи установленным из дистрибутива, попадает в то системное окружение, в которое попадает. И работает с теми версиями библиотек и теми переменными окружения, которые есть в системе. То контейнер содержит в себе не только основной программный компонент, выполняющий продуктовую нагрузку, но и всё необходимое ему системное окружение.

Развёртывание контейнера

Контейнер создаётся из образа следующей командой:

docker container create --name mycontainer ubuntu

Данная команда установит (развернёт) образ ubuntu в контейнер с именем mycontainer. Если не указать имя контейнера с помощью опции –name, то имя контейнеру будет сгенерировано автоматически.

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

[root@centos7 ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND       CREATED       STATUS                     PORTS     NAMES
dd12e86f7020   ubuntu    "/bin/bash"   4 weeks ago   Exited (127) 4 weeks ago             intelligent_greider

В данном примере в последнем столбце указано имя установленного контейнера, которое было сгенерировано автоматически. Так как для данного примера образ развёртывался без опции –name.

Запустить установленный контейнер можно командой:

docker container start mycontainer

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

В данном примере контейнер был создан из образа ubuntu без каких-либо опций, кроме имени (и ту можно было опустить). Это приведёт к тому, что контейнер сразу завершит работу после старта. К контейнеру с операционной системой имеет смысл присоединять псевдотерминал, чтобы при запуске такого контейнера сразу попадать в оболочку запускаемой ОС и взаимодействовать с ней.

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