繁体   English   中英

Docker 容器无法启动

[英]Docker container cannot start

我已经构建了一个 docker 图像来运行 jenkins 服务器,在为此图像创建容器之后,我发现该容器保持退出状态,并且永远不会启动。 即使我尝试使用 UI 启动容器。

这是我采取的步骤,也许我遗漏了什么?

docker pull jenkins/jenkins
sudo mkdir /var/jenkins_home   
docker run -p 9080:8080 -d -v /var/jenkins_home:/var/jenkins_home jenkins/jenkins

我已经在端口 8080 上运行了 java,也许这会影响容器状态?

java    2968 user   45u  IPv6 0xbf254983f0051d87      0t0  TCP *:http-alt (LISTEN)

不知道为什么它在这个端口上运行,我试图杀死 PID 但它重新创建了自己。

根据评论:

docker ps -a

CONTAINER ID   IMAGE             COMMAND                  CREATED         STATUS                     PORTS     NAMES
fc880ccd31ed   jenkins/jenkins   "/usr/bin/tini -- /u…"   3 seconds ago   Exited (1) 2 seconds ago             vigorous_lewin


docker logs vigorous_lewin
touch: setting times of '/var/jenkins_home/copy_reference_file.log': No such file or directory
Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?

文档

注意:避免使用从主机上的文件夹到 /var/jenkins_home 的绑定挂载,因为这可能会导致文件权限问题(在容器内使用的用户可能无权访问主机上的文件夹)。 如果您确实需要绑定挂载 jenkins_home,请确保主机上的目录可由容器内的 jenkins 用户访问(jenkins 用户 - uid 1000)或使用 -u some_other_user 参数和 docker 运行。

因此,他们建议使用 docker 卷,而不是像您那样使用绑定挂载。 如果一定要使用bind mount,需要保证UID 1000可以读写host目录。

最简单的解决方案是通过将-u root添加到docker run命令以 root 身份运行容器,如下所示

docker run -p 9080:8080 -d -v /var/jenkins_home:/var/jenkins_home -u root jenkins/jenkins

但这并不安全,因此根据您运行容器的环境,这可能不是一个好主意。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM