在我的Dockerfile中,我试图安装多个服务,并希望在启动容器时使它们全部自动启动。服务之一是mysql,当我启动容器时,我看不到mysql服务正在启动。当我尝试手动启动时,出现错误: Failed to get D-Bus connection: Operation not permitted
Failed to get D-Bus connection: Operation not permitted
Dockerfile:
FROM centos:7 RUN yum -y install mariadb mariadb-server COPY start.sh start.sh CMD ["/bin/bash", "start.sh"]
我的start.sh文件:
service mariadb start
Docker构建:
docker build --tag="pbellamk/mariadb" .
Docker运行:
docker run -it -d --privileged=true pbellamk/mariadb bash
我检查了centos:systemd图像,也无济于事。如何使用通过systemctl / service命令启动的服务启动容器。
centos:systemd
当你docker run使用bash的命令,在init系统(例如SystemD)不上手(也没有你的启动脚本,因为该命令传递的覆盖CMD在Dockerfile)。尝试更改您要使用的命令,使用/sbin/init守护程序模式启动容器-d,然后使用环顾四周docker exec -it <container id> sh。
docker run
bash
CMD
/sbin/init
-d
docker exec -it <container id> sh