运行启动systemd服务的容器

时间:2019-07-30 11:21:43

标签: docker jenkins systemd

我正在尝试创建一个Jenkins映像,该映像将使Jenkins在运行所有跳过安装向导的安装插件的情况下运行。

我陷入了最后一刻。当我尝试使用“ systemctl start jenkins”启动jenkins(Dockerfile的最后一条指令)时,出现以下错误:

docker: Error response from daemon: OCI runtime create failed: container_linux.go:345: starting container process caused "exec: \"systemctl start jenkins\": executable file not found in $PATH": unknown.

检查https://developers.redhat.com/blog/2019/04/24/how-to-run-systemd-in-a-container/后, https://developers.redhat.com/blog/2014/05/05/running-systemd-within-docker-container/

我尝试过:

ENTRYPOINT:["/sbin/init"]

结果是:

a container was running but the service was not up.

[manuel@master useCaseJenkins]$ docker container run --name jenkins -d -p 8081:8080 manrodri/jenkins_use_case
2272206cdb8ce9483adfdaf4cbba5299c7d337dbe1b1e96e99a19821abd328e4
$ docker container ls 
CONTAINER ID        IMAGE                       COMMAND             CREATED             STATUS              PORTS                    NAMES
2272206cdb8c        manrodri/jenkins_use_case   "/sbin/init"        37 seconds ago      Up 36 seconds       0.0.0.0:8081->8080/tcp   jenkins

[manuel@master useCaseJenkins]$ curl http://localhost:8081
curl: (56) Recv failure: Connection reset by peer

容器日志根本不显示任何内容。

[manuel@master useCaseJenkins]$ docker container logs 2272206cdb8c
[manuel@master useCaseJenkins]$ 

我尝试以与前面提到的两个站点所示相同的方式运行一个简单的httpd服务,结果相同。容器正在运行,但端口80没有任何故障。

https://github.com/manrodri/jenkinsUseCase/blob/master/Dockerfile上查看我的Dockerfile

1 个答案:

答案 0 :(得分:0)

您不需要在容器中运行systemd即可拥有服务管理器。那就是你真正想要的。 ;)

如果您想查看我的docker-systemctl-replacement,也可以看看docker-systemctl-images,其中有一些示例。在工作中,我什至在运行带有该脚本的Jenkins,但要公开显示它,其配置要复杂一些。