【问题标题】:systemctl command doesn't work inside docker-containersystemctl 命令在 docker-container 中不起作用
【发布时间】:2020-03-30 10:49:21
【问题描述】:

我为我的 Spring Boot 应用程序制作了一个 Docker 映像。我无法在 Docker 容器中运行 systemctl 命令。这就是我执行时得到的结果

systemctl daemon reload:-

Failed to connect to bus: No such file or directory

我构建 Docker 映像所遵循的步骤:-

1) docker build --rm -t <IMAGE_NAME> .

2)docker-compose up

3)docker exec -it <CONTAINER_NAME> bash

当我使用 :-

启动服务时

service <SERVICE_NAME> start

我得到了无法识别的服务。如何在 docker 中执行服务?

【问题讨论】:

  • 你没有。通常,您应该假设像 systemctlservice 这样的命令在 Docker 中不起作用。如果您正在运行一个进程,请将其设为主要的前台进程;如果您正在运行多个进程,请在多个容器中运行它们。
  • @DavidMaze 不介意的话可以举个例子解释一下吗

标签: docker service docker-compose dockerfile systemctl


【解决方案1】:

如果您想重用现有的 systemd 服务描述符,那么您需要将 systemd 作为入口点运行,或者您可以使用像 docker-systemctl-replacement 这样的包装脚本,它既是服务管理器又是 init 守护进程。

【讨论】:

【解决方案2】:

正如 David 所说,您通常不会在 docker 环境中使用像 systemctl 这样的流程管理器。相反,您可以使您的应用程序成为图像的主要入口点。在 Spring 文档中查看更多关于在 https://spring.io/guides/gs/spring-boot-docker/#_containerize_it 上将其与 docker 一起使用的信息。

Key 在您的 dockerfile 中有类似的内容,而不是 systemctl daemon reload

ENTRYPOINT ["java","-jar","/app.jar"]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-23
    • 2015-01-14
    • 2018-06-06
    • 1970-01-01
    • 2015-10-30
    • 1970-01-01
    • 2021-10-19
    相关资源
    最近更新 更多