在 Centos 6.6 docker 容器中安装厨师服务器
Posted
技术标签:
【中文标题】在 Centos 6.6 docker 容器中安装厨师服务器【英文标题】:Installing chef server in Centos 6.6 docker container 【发布时间】:2015-05-07 14:40:45 【问题描述】:我正在使用最新版本的 docker 运行 centos 6.5 minimum。我从 centos 6.6 映像创建了一个容器,并且运行良好。然后我将 chef server 12 安装到容器上,但是当我运行 reconfigure 时出错:
[2015-03-06T01:32:47+00:00] ERROR: Running exception handlers
Running handlers complete
[2015-03-06T01:32:47+00:00] ERROR: Exception handlers complete
[2015-03-06T01:32:47+00:00] FATAL: Stacktrace dumped to /opt/opscode/embedded/cookbooks/cache/chef-stacktrace.out
Chef Client failed. 13 resources updated in 89.75134466 seconds
[2015-03-06T01:32:49+00:00] FATAL: Mixlib::ShellOut::ShellCommandFailed: execute[initctl status private-chef-runsvdir] (enterprise::runit_upstart line 34) had an error: Mixlib::ShellOut::ShellCommandFailed: Expected process to exit with [0], but received '1'
---- Begin output of initctl status private-chef-runsvdir ----
STDOUT:
STDERR: initctl: Unable to connect to Upstart: Failed to connect to socket /com/ubuntu/upstart: Connection refused
---- End output of initctl status private-chef-runsvdir ----
Ran initctl status private-chef-runsvdir returned 1
似乎有针对 Ubuntu 的修复,但我想知道是否有针对 Centos 的解决方法,因为我确实在 docker 库中看到了可用于拉取的厨师服务器映像,所以我知道可以将其安装在容器上但我也无法让它为我工作。
【问题讨论】:
经过一些研究,它似乎与 docker 相关。我找到了this 和this 和this SO question too(根本没有真正回答你的问题,但提供了线索) 【参考方案1】:您应该使用以下命令启动容器:/sbin/init
。因为chef服务器以daemon启动,所以PID 1的进程必须是/sbin/init
。
【讨论】:
【参考方案2】:-
备份现有的 /sbin/initctl
sudo mv /sbin/initctl /sbin/initctl.distrib
从 /bin/true sudo ln -s /bin/true /sbin/initctl
为 /sbin/initctl 创建符号链接
这应该可以解决问题
【讨论】:
以上是关于在 Centos 6.6 docker 容器中安装厨师服务器的主要内容,如果未能解决你的问题,请参考以下文章
在win10 docker启动的centos容器中安装nginx