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

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

24 июл, 2023

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

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