我正在尝试创建一个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
答案 0 :(得分:0)
您不需要在容器中运行systemd即可拥有服务管理器。那就是你真正想要的。 ;)
如果您想查看我的docker-systemctl-replacement,也可以看看docker-systemctl-images,其中有一些示例。在工作中,我什至在运行带有该脚本的Jenkins,但要公开显示它,其配置要复杂一些。