当前位置: 首页 > 知识库问答 >
问题:

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

孙清野
2023-03-14

在我的Dockerfile中,我试图安装多个服务,并希望在启动容器时使它们都自动启动。其中一个服务是mysql,当我启动容器时,我没有看到mysql服务启动。尝试手动启动时,出现错误:无法获得D-Bus连接:操作不允许

DockerFile:

FROM centos:7

RUN yum -y install mariadb mariadb-server

COPY start.sh start.sh

CMD ["/bin/bash", "start.sh"]
service mariadb start
docker build --tag="pbellamk/mariadb" .
docker run -it -d --privileged=true pbellamk/mariadb bash

我已经检查了centos:systemd映像,但这也没有帮助。如何用使用systemctl/service命令启动的服务启动容器

共有1个答案

杜辰龙
2023-03-14

当您使用bash作为命令执行docker run时,init系统(例如SystemD)不会启动(您的启动脚本也不会启动,因为您传递的命令覆盖了Dockerfile中的cmd)。尝试将您使用的命令更改为/sbin/init,在后台进程模式下使用-d启动容器,然后使用Docker exec-it sh 在shell中查看。

 类似资料:
  • 在我的Dockerfile中,我试图安装多个服务,并希望在启动容器时使它们都自动启动。其中一个服务是mysql,当我启动容器时,我没有看到mysql服务启动。尝试手动启动时,出现错误: DockerFile: 我已经检查了映像,但这也没有帮助。如何用使用systemctl/service命令启动的服务启动容器。

  • 我试图在centos 7中启动Rabbitmq服务器。我安装了erlang,因为它依赖于Rabbitmq-server。包erlang。x86_640: R16B-03.7.el7。然后我使用包安装Rabbitmqrabbitmq-server-3.2.2-1.noarch.rpm.安装成功。我启用了管理控制台uisng Rabbitmq-plugins启用rabbitmq_management。

  • 我过去曾在Azure应用服务上发布过一系列Docker应用,但由于某些原因,在Azure运营模式中创建新的生成和发布管道后,我的Docker容器将无法在Azure应用服务中运行。这些特殊的容器味道Linux。 在各种Docker映像之间切换,任何使用旧管道构建的映像都可以工作,但使用新管道构建的映像则不行。 当我将应用程序服务的日志文件中的确切命令复制粘贴到本地命令行时,它工作得很好。我可以使用与

  • 问题内容: 我想在Centos7的Docker容器中运行Jenkins。我看到了Jenkins的官方文档:首先,从Docker存储库中提取官方的jenkins映像。 接下来,使用该映像运行一个容器,并将数据目录从该容器映射到主机;例如,在下面的示例中,容器中的/ var / jenkins_home从主机上的当前路径映射到jenkins /目录。Jenkins 8080端口也以49001的身份向主

  • 问题内容: 我使用以下命令创建了容器: 以下是命令: 真的没有太多要说的,我希望容器能启动并保持正常运行。这是日志: 问题答案: 您正在尝试运行,它是需要tty 才能运行的交互式外壳。使用,在“分离”模式下运行此命令实际上没有任何意义,但是您可以通过添加到命令行来做到这一点,以确保容器具有与其关联的有效tty并保持连接状态: 在启动分离的容器时,您通常会运行某种长期存在的非交互式进程(例如,或We