news
Расширенные конфигурации в Амстердаме
VB
26 марта 2023
Обновлено 30 мая 2023

Как сохранить работу контейнера Docker после запуска служб

Docker

Почему вообще возник такой вопрос

Docker был разработан, чтобы запускать предварительно сконфигурированное программное обеспечение полностью изолированно, в так называемой «песочнице». С одной стороны, такой подход обеспечивает полную идемпотентность, у нас есть гарантия, что программное обеспечение не зависит от внешней среды и его «поведение» всегда одинаково. С другой стороны, Docker останавливается, когда завершают свою работу запущенные внутри образа команды. Пример. Работа контейнера сразу остановится после выполнения команды ниже:

docker run <имя_образа> <команда>   # Запуск команды
docker ps  # Вывод списка работающих контейнеров

pic1

Такое поведение Docker – не ошибка, оно обусловлено экономией системных ресурсов. Однако иногда контейнер должен работать постоянно, например, если программное обеспечение должно постоянно ждать «входящие» соединения.

Как «заставить» контейнер Docker работать постоянно

Вы можете достигнуть эту цель несколькими способами:
Запуск «дополнительной» сессии псевдотерминала. Такой способ хорош, если поддерживать работу Docker-контейнера нужно не постоянно, а лишь время от времени. Достаточно просто запустить команду с флагами -it:

docker run -it <имя_образа> bash   # Запуск сессии командного интерпретатора
<команда>   # Запуск команды или скрипта «внутри» контейнера
docker ps  # Вывод списка работающих контейнеров

pic2

Другой способ не дать контейнеру выключиться – выполнение любой команды «в цикле». После запуска команды можно закрыть сеанс терминала:

docker run <имя_образа> bash -c <команда>

pic3

Затем просто проверьте статус контейнера:

docker ps

pic4

Тот же самый результат можно получить, если запустить докер в «непривязанном» режиме. Для этого используйте флаг -d:

docker run -d <имя_образа> bash -c <команда> # Запуск команды
docker ps  # Вывод списка работающих контейнеров

pic5

Заключение

Прочитав эту статью, вы узнали, как сохранить докер-контейнер работающим, даже если запущенные «внутри» него команды завершились.

Оценка:
5 из 5
Аverage rating : 5
Оценок: 1
191028 Санкт-Петербург Литейный пр., д. 26, Лит. А
+7 (812) 403-06-99
700 300
ООО «ИТГЛОБАЛКОМ ЛАБС»
700 300