Docker: Запуск Нескольких Команд в Контейнере

С помощью команды docker exec в Docker-контейнере можно выполнить сразу несколько команд.

Если Docker-контейнер остановлен, перед выполнением команды docker exec он должен быть запущен с помощь команды docker run.

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

Дельный Совет: Выполнение команд в Docker-контейнере! Читать далее →

Запуск Нескольких Команд в Docker-контейнере

Для того, чтобы выполнить сразу несколько команд в уже запущенном Docker-контейнере, используйте следующий синтаксис:

$ docker exec -it <container> <bash|sh> -c "<command1>; <command2>; <command3>"

— пример —

$ docker exec -it c7d42807e9c0 /bin/sh -c "whoami; cat /etc/alpine-release"
root
3.11.6

Чтобы выполнять каждую последующую команду только если предыдущая команда завершилась успешно (0 exit code), в качестве разделителя, используйте &&:

$ docker exec -it <container> <bash|sh> -c "<command1> && <command2> && <command3>"

— пример —

$ docker exec -it 89fa2ac009bb /bin/bash -c "nginx -t && nginx -s reload"
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
2020/06/08 18:34:59 [notice] 78#78: signal process started

В приведенном выше примере, nginx будет перезагружен только в случае успешного выполнения configtest.

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

Если необходимый Docker-контейнере остановлен, его предварительно следует запустить из соответствующего образа с помощью команды docker run:

$ docker run -dt <image>

Дельный Совет: Как войти в Docker-контейнер и запустить bash! Читать далее →