当前位置: 首页 > 面试题库 >

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

勾炳
2023-03-14
问题内容

在我的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



 类似资料:
  • 在我的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