首页 > 解决方案 > 如何在 docker 容器中运行后台程序

问题描述

我想运行一个容器,但它是一个后台程序(例如: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 容器中运行后台程序,并且当我重新启动容器时它可以自动启动?


或者是否有任何可以保持容器运行的小型前台程序?(我试过sleep 99999999了,但没用)

标签: docker

解决方案


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

对于 tinyproxy,我相信它就是-d标志(来源:https ://www.mankier.com/8/tinyproxy )。

根据评论编辑:

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

坚持每个容器一个进程将在未来为您省去麻烦。


推荐阅读