为了调试原因这个问题发生在容器上运行以下命令:
docker run -it <dockerImageName> dmesg
结果是:
dmesg: read kernel buffer failed: Permission denied
尝试
- 运行
docker run -it <dockerImageName> sudo dmesg
返回同样的问题
答案1
作为迈克尔·汉普顿前面提到,容器仅用于运行单个原子服务。事实上,我们应该明白,容器不是虚拟机,而是本地主机上的单个进程。
尽管如此,我还是知道,让 SystemD 在容器内工作有点困难这里
我能够让 SystemD 在 FROM centos:centos7 构建的映像内运行:
docker run --privileged -ti -e “container=docker” -v /sys/fs/cgroup:/sys/fs/cgroup trinitronx/ansible-base:stable-centos7 /usr/sbin/init
由于某些未记录的原因,变量 container=docker 显然是需要的。/sys/fs/cgroup 也是必需的,因为根据 RedHat Bug 1033604,SystemD 需要 cgroups 才能正常工作。
完成此操作后,尝试使用登录容器docker exec -it <container> /bin/bash
,然后就可以执行systemctl
命令了。