Выход Docker после запуска команды, которая переходит в фоновый режим.Тогда как мы можем получить пользу от этой услуги - PullRequest
0 голосов
/ 04 марта 2019

Я запускаю команду, которая сама уходит в фон.На терминале кажется, что команда показывает некоторые результаты на экране и завершается.

На моем хосте я могу проверить, что команда все еще выполняется, найдя ее в $ ps -aux

ТакДокер считает, что команда выполнена, и она завершается.

На основании этой фоновой команды запуска я хочу запустить другую команду, используя --exec.

Так как этого добиться

1 Ответ

0 голосов
/ 04 марта 2019

Docker-контейнер живет до тех пор, пока процесс, который вы указали для его запуска, не завершился.

Docker-контейнеры не используют демонов и сервисы - вы должны запускать ваш процесс впередний план контейнера.Это рекомендуемое использование контейнеров - хотя вы можете заставить его делать иначе, если хотите.

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

Это руководство может оказаться полезным, если вы хотите запустить несколько процессов в контейнере: https://docs.docker.com/config/containers/multi-service_container/

Небольшая хитрость заключается в добавлении неопределенно запущенной команды в конец докера ENTRYPOINT или CMD.Один используемый комментарий - tail -f /dev/null, например:

systemctl start myservice && tail -f /dev/null

Не могу сказать, что могу порекомендовать это, но вполне вероятно, что он сделает то, что вы хотите.

Я включуЗдесь минимальный пример того, как это можно использовать.Вот Dockerfile, где указывается ENTRYPOINT для запуска службы (работает в фоновом режиме), а затем настраивается нулевое устройство, / dev / null:

FROM ubuntu
RUN apt-get update
RUN apt-get install -y apache2
ENTRYPOINT service apache2 start && tail -f /dev/null

Создайте его с помощью:

docker build -t servicetest:01 .

Начните с:

docker run -p 8080:80 servicetest:01

И посетите http://localhost:8080, чтобы увидеть, как оно работает

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...