一尘不染

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

docker

在我的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命令启动的服务启动容器。


阅读 1036

收藏
2020-06-17

共1个答案

一尘不染

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

2020-06-17