Раздел помощи SpaceWeb

Пример работы с контейнерами Docker

Docker – это ПО, которое с помощью контейнеров-образов собирает все необходимые зависимости для запуска приложений. Использование Docker контейнеров, позволяет запускать проекты на любых других машинах, где установлен Docker

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

Каждый раз, когда используется команда docker run, из образа, который вы указываете, создается новый контейнер.

Создание контейнера

Команда docker run создает новый контейнер, который в качестве основания будет использовать образ Centos. Ключ -t откроет терминал, а -i – позволит взаимодействовать с ним. Для входа в контейнер можно использовать стандартную команду bash:

docker run -i -t centos:8 /bin/bash

В терминале появится подтверждение того, что вы находитесь внутри контейнера в качестве root-пользователя. После символа @ можно увидеть ID контейнера, в котором находитесь:

[root@fe158d095b9f /]#

Для проверки работы, можно например создать файл с произвольным содержимым и вывести его:

echo "Hello Sweb!" > /tmp/sometext.txt
cat /tmp/sometext.txt

В результате вывода должны увидеть "Hello Sweb!"

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

Проверим, использую команду docker ps существую ли в настоящий момент запущенные контейнеры

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

Как видно больше запущенных нет

Используя команду docker ps -a можно увидеть все контейнеры в том числе и остановленные :

fe158d095b9f centos:8 "/bin/bash" About an hour ago Exited (0) 3 minutes ago stupefied_pasteur

При создании контейнера ему присваивается ID и автоматически генерируется имя. В этом примере fe158d095b9f – это ID) контейнера, а stupefied_pasteur – имя. Команда ps -a позволяет увидеть эту информацию, а также образ, из которого контейнер был создан (в данном случае centos 8), время контейнер был создан (около часа назад), какая команда была запущена в контейнере (/bin/bash). Также вы можете посмотреть статус контейнера (из него вышли 3 минуты назад).

Пробуем снова запустить выполнить команду для создания контейнера:

docker run -i -t centos:8 /bin/bash

Стоит заметить что каждый раз вызывая стандартную команду запуска, docker создает новый контейнер и он будет иметь другой id. Если попытаемся открыть содержимое в созданном ранее файле образа, то мы увидим ошибку: cat: /tmp/sometext.txt: No such file or directory

Может сложиться впечатление, что данные пропали, но дело, не в этом. Выйдем из второго контейнера используя exit Теперь убедимся, что 2 созданных контейнера (в том числе и первый с созданным файлом ) существуют в системе используя ps -a:

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
648cada43cef centos:8 "/bin/bash" 13 minutes ago Exited (127) 5 seconds ago inspiring_kare fe158d095b9f centos:8 "/bin/bash" About an hour ago Exited (0) 28 minutes ago stupefied_pasteur

Перезапуск контейнера

Для запуска ранее созданного контейнера, необходимо вызвать команду start с ключом –ai и далее указать ключ нужного контейнера или его имя. Команда будет выглядеть так:

docker start -ai fe158d095b9f

Мы снова попали в оболочку контейнера, где был создан файл sometext.txt, можно его открыть cat /tmp/sometext.txt и мы увидим нужное содержимое.

Все изменения внутри контейнера сохраняются, даже в том случае, если контейнер был остановлен. Информация внутри контейнера будет только, если был удален контейнер.

Удаление контейнера

Удалить контейнеры можно используя команду docker rm . Команда сработает только на остановленные контейнеры. После команды нужно указать id либо имя одного или нескольких контейнеров. Например удалим 2 созданных нами контейнера :

docker rm 648cada43cef fe158d095b9f

Если контейнеры остановлены и существуют, на выходе мы увидим

648cada43cef fe158d095b9f

Контейнеры были удалены