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
Контейнеры были удалены