我正在尝试在docker中启动一个具有许多init和upstart服务的系统,我收到了这个错误。
initctl: Unable to connect to Upstart:
Failed to connect to socket /com/ubuntu/upstart: Connection refused
所有的解决方法都建议与/ bin / true建立硬链接以使错误无效。但我需要让upstart管理这些服务以实现restart-ability和upstart发出事件才能工作......
因为似乎docker不支持这个,我正在考虑编写脚本以启动/etc/rcX.d中的所有服务并跟踪PID的严重破解。这并不能解决来自暴发户的缺乏发射事件的问题。
如何在docker中启动upstart进程?
答案 0 :(得分:12)
不幸的是,upstart在docker容器中不起作用,因为它们对init系统有些神奇。
这issue解释了:
如果你的应用程序使用upstart,这不适用于裸码头图像,如果他们转移/ sbin / init或更多 / sbin / initctl类似于/ bin / true或/ dev / null。 如果此应用程序具有旧的学校systemV initscript并且未执行initctl命令,则应用程序可以使用服务启动 转向。
在salt-minion的情况下,在ubuntu上,包装使用了暴发户 工作,没有经典的init脚本,所以它不会开始是正常的 两种情况。
this one说:
因为Docker用自己的替换默认的/ sbin / init,所以 无法在Docker容器中运行Upstart init。
答案 1 :(得分:3)
你绝对应该能够做到这一点。这真的不是“Docker Way”的方式,但它很有可能。您可能只想考虑使用phusion/baseimage基础图像,它支持内置的runit
。如果您更愿意使用upstart
,只需看看它们是如何实现入口点的, /sbin/myinit
,然后点击。