systemd和systemctl在Ubuntu Docker映像中
看起来systemd
在Ubuntu Docker映像中不是活动的或可用的。
我从ubuntu:16.04
和ubuntu: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镜像的任何文档,只有关于从Upstart
到systemd
的Ubuntu转换的信息。 有没有任何文件给出完整的解释?
这是设计。 Docker应该在容器的前台运行一个进程,并且它将在容器的pid命名空间中生成为PID 1。 Docker专为进程隔离而设计,而不是用于操作系统虚拟化,因此在容器内部没有其他操作系统进程和守护进程(如systemd,cron,syslog等)运行,只有您运行的入口点或命令。
如果他们包含systemd命令,你会发现许多事情因为你的入口点取代init而无法使用。 Systemd也可以用于cgroups,因为更改cgroups的能力可以允许进程逃避容器的隔离,所以docker会限制容器内部。 没有systemd作为你的容器中的init运行,没有守护进程来处理你的启动和停止命令。
链接地址: http://www.djcxy.com/p/18207.html