systemd和systemctl在Ubuntu Docker映像中

看起来systemd在Ubuntu Docker映像中不是活动的或可用的。

我从ubuntu:16.04ubuntu:16.10映像运行Docker容器。

如果我在16,04容器中执行systemctl status ssh ,结果是错误Failed to connect to bus: No such file or directory 。 在16.10容器中,错误是bash: systemctl: command not found

如果我在16.04容器中找到which systemctl systemctl而不是在16.10容器中找到which systemctl systemctl。

我发现/lib/systemd存在。

我已经尝试使用apt-get install systemd libpam-systemd systemd-ui 。 然后which systemctl发现systemctl在16.10 ,但systemctl status ssh仍然给出了错误Failed to connect to bus: No such file or directory

我的主要问题是:如何激活systemd和systemctl以在Ubuntu Docker映像中使用?

为什么systemd在Ubuntu Docker容器中不活跃? systemd没有用于实例化容器?

我没有找到关于Ubuntu / Ubuntu Docker镜像的任何文档,只有关于从Upstartsystemd的Ubuntu转换的信息。 有没有任何文件给出完整的解释?


这是设计。 Docker应该在容器的前台运行一个进程,并且它将在容器的pid命名空间中生成为PID 1。 Docker专为进程隔离而设计,而不是用于操作系统虚拟化,因此在容器内部没有其他操作系统进程和守护进程(如systemd,cron,syslog等)运行,只有您运行的入口点或命令。

如果他们包含systemd命令,你会发现许多事情因为你的入口点取代init而无法使用。 Systemd也可以用于cgroups,因为更改cgroups的能力可以允许进程逃避容器的隔离,所以docker会限制容器内部。 没有systemd作为你的容器中的init运行,没有守护进程来处理你的启动和停止命令。

链接地址: http://www.djcxy.com/p/18207.html

上一篇: systemd and systemctl within Ubuntu Docker images

下一篇: Can you explain Docker with a practical example/case?