systemctl命令在docker-container内部不起作用

时间:2020-03-30 10:49:21

标签: docker service docker-compose dockerfile systemctl

我已经为我的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内部执行服务?

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

正如David所评论的那样,通常在docker环境中不使用systemctl之类的流程管理器。相反,您可以使应用程序成为映像的主要入口点。在https://spring.io/guides/gs/spring-boot-docker/#_containerize_it上,请参阅Spring文档中有关将其与docker结合使用的更多信息。

密钥在您的dockerfile中有这样的内容,而不是systemctl daemon reload

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