我想运行一个容器,但它是一个后台程序(例如: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进程。
使用tinyproxy我相信它是-d
旗(来源:https://www.mankier.com/8/tinyproxy)。
根据评论进行编辑:
如果你的入口点运行两个进程 - 一个是你的应用程序,另一个是tinyproxy - 你应该将它们分成两个容器,并使用-d标志在前台运行tinyproxy。另一个信息来源可以是这个tinyproxy码头工人。
每个容器坚持一个进程将为您节省将来的麻烦。
使用nohup
#!/bin/sh
nohup sh -c programname &