在我的 Dockerfile 中,我尝试安装多个服务,并希望在启动容器时让它们全部自动启动。其中一项服务是 mysql,当我启动容器时,我没有看到 mysql 服务启动。当我尝试手动启动时,出现错误: 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 build --tag="pbellamk/mariadb" .
码头工人运行:
docker run -it -d --privileged=true pbellamk/mariadb bash
我检查了 centos:systemd
图像,但这也无济于事。如何使用 systemctl/service 命令启动服务启动容器。
原文由 Premchand 发布,翻译遵循 CC BY-SA 4.0 许可协议
当您执行
docker run
和bash
作为命令时,初始化系统(例如 SystemD)不会启动(您的启动脚本也不会启动,因为您传递的命令会覆盖CMD
在 Dockerfile 中)。尝试将您使用的命令更改为/sbin/init
,使用 --- 以守护程序模式启动容器,然后使用-d
docker exec -it <container id> sh
在外壳中查看。