Как я могу запустить фоновую программу в Docker-контейнере - PullRequest
0 голосов
/ 27 февраля 2019

Я хочу запустить контейнер, но это фоновая программа (например: tinyproxy, я создаю изображение tinyproxy_local)


docker run -d tinyproxy_local tinyproxy

это завершится, потому что tinyproxy - это фоновая программа.


Я могу сделать это так:

docker run -it tinyproxy_local bash
/#: tinyproxy
/#: ctrl+p ctrl+q

это может быть запущено, но я хочу, чтобы tinyproxy мог автоматически запускаться при перезапуске контейнера.Я проверил это:

docker run -d tinyproxy_local tinyproxy && sleep 99999999999

Я думаю, что контейнер может продолжать работать во время сна, но он не работает.


Как я могу запустить фоновую программу в Docker-контейнере,и он может запускаться автоматически при перезапуске контейнера?


Или есть какая-нибудь небольшая программа forground, которая может поддерживать работу контейнера ?(Я пробовал sleep 99999999, но это не сработало)

Ответы [ 2 ]

0 голосов
/ 27 февраля 2019

используйте nohup

#!/bin/sh
nohup sh -c programname &
0 голосов
/ 27 февраля 2019

Вы должны запускать процессы докера на переднем плане.

С tinyproxy я считаю, что это флаг -d (источник: https://www.mankier.com/8/tinyproxy).

Редактировать на основе комментариев:

Если ваша точка входа запускает два процесса - один ваше приложение, а другой - tinyproxy - вы должны разделить их на два контейнера и запустить tinyproxy на переднем плане с флагом -d. Другой источник информации можетбудь это tinyproxy docker.

Придерживаясь одного процесса на контейнер, вы избавите себя от головной боли в будущем.

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