在 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

如何使用 dockerfile 在 centos docker 容器中安装 mongodb-org-tools?

Docker容器中安装vim命令

在CentOS中安装Docker

如何在ubunto中安装docker

无法在 docker 容器中安装 npm?