在docker容器中使用systemctl启动服务

在我的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构建:

docker build --tag="pbellamk/mariadb" .

Docker运行:

docker run -it -d --privileged=true pbellamk/mariadb bash

我检查了centos:systemd图像,也无济于事。如何使用通过systemctl / service命令启动的服务启动容器。

回答:

当你docker

run使用bash的命令,在init系统(例如SystemD)不上手(也没有你的启动脚本,因为该命令传递的覆盖CMD在Dockerfile)。尝试更改您要使用的命令,使用/sbin/init守护程序模式启动容器-d,然后使用环顾四周docker

exec -it <container id> sh

以上是 在docker容器中使用systemctl启动服务 的全部内容, 来源链接: utcz.com/qa/431789.html

回到顶部