[英]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.