0

我已经设置了一个基于 OpenSuse 12 的 docker 容器,安装了一些附加文件并将一些安装程序二进制文件复制到容器中。到目前为止一切都很好。

从容器的运行映像中,我现在需要运行上述设置程序,但这需要启动并运行 uuid.socket - uuid.socket 反过来需要 systemctl 才能正常工作,这会导致如下错误:

hxehost:/usr/sap/SRCFiles # systemctl
Failed to get D-Bus connection: Unknown error -1

我像这样启动了 docker 容器:

docker run -h hxehost -i -t f3096b0aa964 /bin/bash

其中,根据一些帖子应该启动一个机器容器而不是一个应用程序容器。

谁能告诉我我在这里做错了什么???如何让 systemctl 在 docker 容器中工作?

我尝试使用此命令启动容器,根据链接提示应该这样做,但无济于事

docker run --privileged --rm -ti -e 'container=docker' -h hxehost --network="bridge" --tmpfs /run --tmpfs /tmp -v /sys/fs/cgroup:/sys/fs/cgroup:ro siliconchris/hxe:v0.0.2 /bin/bash

如果我这样做, systemctl 仍然会给出完全相同的错误。

如果我启动/sbin/init而不是 /bin/bash,我可以看到启动了很多服务(有些服务,如 wicked、login 和 module,失败)。最后,容器向我显示了一个登录信息。登录后,我现在可以执行 systemctl 并显示所有服务及其各自的状态。

现在我的下一个问题是:这种方法是否可行???

此致,

克里斯

您可以在 docker内的 SAP HANA Express Edition中找到此图像的存储库

4

1 回答 1

0

当前大多数 Linux 系统都依赖于 SystemD 运行,systemctl 会向它发送请求。但是,当我将 systemctl 二进制文件替换为仅解释启动/停止/状态/启用命令的脚本时,大多数应用程序都可以轻松安装。作为另一个好处,它不再需要那些复杂的启动命令来生成图像以将 systemd 映射到容器中。可能对你有帮助吗?请查看docker-systemctl-replacement

于 2017-03-23T14:52:45.000 回答