Docker управление контейнерами

Docker — самая распространенная система контейнеризации, позволяющая запускать необходимое для разработки ПО в контейнерах не устанавливая его на локальную систему. В рамках данного материала разберем docker управление контейнерами.


Docker состоит из нескольких компонентов:
  1. Образ — сконфигурированный разработчиками набор ПО, который скачивается с официального сайта
  2. Контейнер — имплементация образа — сущность на сервере, созданная из него, контейнер не должен быть точной копией и может быть скорректирован используя Dockerfile
  3. Volume — область на диске, которую использует контейнер и в которую сохраняются данные. После удаления контейнера ПО не остается, данные же могут использоваться в будущем

Над всей структурой выстроена особым образом сеть, что позволяет пробрасывать желаемым образом порты и делать контейнер доступным снаружи (по умолчанию он работает на локальном IP адресе) через виртуальный бридж. Контейнер при этом может быть доступен как миру, так и одному адресу.

 

 

Docker управление контейнерами: базовые возможности

Установим Docker на Ubuntu или Debian сервер если он еще не установлен по инструкции. Лучше выполнять команды от имени непривилегированного пользователя через sudo

 

Запуск самого простого контейнера покажет, что все работает

docker run hello-world

 

Базовые комагды для управления контейнерами

 

Вывести все активные контейнеры можно так

docker ps

 

С ключем -a будут выведены все контейнеры, в том числе неактивные

docker ps -a

 

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

docker run —name hello-world

 

Запускаем контейнер с именем my-linux-container на основе образа ubuntu и переходим в консоль контейнера указывая оболчку bash

docker run -it —name my-linux-container ubuntu bash

Чтобы выйти из контейнера и вновь оказаться на хост системе нужно выполнить

exit

 

Все образы, на основе которых создаются контейнеры скачиваются с hub.docker.com автоматически при первом создании контейнера, те, что уже существуют локально можно увидеть выполнив docker images

docker images

 

Создание контейнера из уже скачанного образа будет происходить значительно быстрее (практически мгновенно)

 

 

При выходе из контейнера с exit он останавливается, чтобы этого не происходило выходить можно сочетанием клавиш CTRL + A + P

 

Можно убрать все контейнеры, не являющиеся активными

docker rm $(docker ps -a -f status=exited -q)

Или удалять их по одному

docker rm ID

Вместо идентификатора в последней команде можно указать имя

 

В docker управление контейнерами производится за счет небольшого количества интуативно понятных команд:

 

docker container start ID

docker container stop ID

docker container restart ID

docker container inspect ID

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

 

 

Создание своего образа Docker и использование Dockerfile

Образы обычно создаются из уже существующих за счет использования дополнительных опций, указанных в Dockerfile

mcedit Dockerfile

FROM ubuntu
CMD echo «hello world»

 

Сейчас создается новый образ на основе стандартного с ubuntu

 

Собираем образ дав ему имя (точка в конце команды означает, что используется текущий каталог, а значит и Dockerfile в нем)

docker build -t my-ubuntu .

 

docker images теперь покажет и созданный только что образ my-ubuntu

 

Его можно запустить, в консоль при этом будет выведено hello world и это единственное отличие от дефолтного образа

docker run my-ubuntu

 

Обычно нужны более сложные правила, например в образ нам нужно включить python3 — перйдем в новый каталог и создадим Dockerfile

 

mkdir anotherimage

cd anotherimage

 

mcedit Dockerfile

FROM ubuntu
CMD apt-get update && apt-get install python3

 

Все инструкции записываются в одну строку

 

docker build -t my-ubuntu-with-python3 .

 

Запускаем контейнер переходя внутрь

docker run -it my-ubuntu-with-python3 bash

 

Внутри от имени root нужно выполнить dpkg -l | grep python3, команда покажет, что пакет присутствие в системе, что означает успех