容器默认不启动init进程的,导致centos7中执行systemctl时会出现如下错误:
1 |
Failed to get D-Bus connection: Operation not permitted |
其实,systemctl完全可以通过参考配置文件,启动命令就行,当试图去写一个脚本替换掉systemctl时,发现已经有人做了:https://github.com/gdraheim/docker-systemctl-replacement
把这里的systemctl.py 替换掉systemctl命令即可。
另外,虽然我们可以直接使用systemctl了,但是,某些工具未必能,如: ansible service模块,timedatectl。
ansible service模块还会参考是否存在目录 /run/systemd/system 。 可以手动创建该目录将其欺骗。
centos7容器修改时区:
1 |
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && <span class="hljs-built_in">echo</span> <span class="hljs-string">"Asia/Shanghai"</span> > /etc/timezone |
/usr/share/zoneinfo/Asia/Shanghai 和 /etc/localtime 并不属于相同的rpm包,前者属于: tzdata 后者属于: systemd