如何在docker容器中运行后台程序

问题描述 投票:0回答:2

我想运行一个容器,但它是一个后台程序(例如: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,但它不起作用)

docker
2个回答
3
投票

您应该在前台运行docker进程。

使用tinyproxy我相信它是-d旗(来源:https://www.mankier.com/8/tinyproxy)。

根据评论进行编辑:

如果你的入口点运行两个进程 - 一个是你的应用程序,另一个是tinyproxy - 你应该将它们分成两个容器,并使用-d标志在前台运行tinyproxy。另一个信息来源可以是这个tinyproxy码头工人。

每个容器坚持一个进程将为您节省将来的麻烦。


0
投票

使用nohup

#!/bin/sh
nohup sh -c programname &
© www.soinside.com 2019 - 2024. All rights reserved.