我知道,我知道。想要servicectl
在容器中访问是件坏事,我知道!
现在,这件事已经过去了,但我遇到了一个问题。当我做这样的事情时:
docker run -P --privileged --net=host --cidfile="/path/to/file.cid" -t -i --oom-kill-disable myimage /sbin/init
我做了一些事情,想要用这个命令提交:
docker commit -m 'Install This, configure that' 133c myimage
命令行等待、等待、等待。磁盘上没有写入,处理器和 RAM 上没有太多活动。如果我尝试docker ps
,终端也会冻结(我的意思是,即使 CTRL+C 也不起作用)。
但如果我把第一个命令改成
docker run -P --privileged --net=host --cidfile="/path/to/file.cid" -t -i --oom-kill-disable /bin/bash
我做了相同的修改,然后提交并且它工作正常(但由于 D-Bus 问题我无法重新启动任何东西)。
该容器位于 CentOS 7.2 映像上,在 CentOS 主机和 Ubuntu 主机上遇到了同样的问题。
答案1
使用centos/systemd基础镜像,它包含systemd
rpm。而不是systemd-container
在 centos7 基础镜像中发现的特殊内容。
https://hub.docker.com/r/centos/systemd/
然后需要 cgroup 卷
docker run --privileged -v /sys/fs/cgroup:/sys/fs/cgroup:ro centos:systemd