Docker容器无法启动

xfb7svmp  于 2023-01-29  发布在  Docker
关注(0)|答案(1)|浏览(206)

我已经建立了一个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?
3gtaxfhh

3gtaxfhh1#

docs显示
注:避免使用从主机上的文件夹到/var/jenkins_home的绑定挂载,因为这可能会导致文件权限问题(在容器内部使用的用户可能没有权限访问主机上的文件夹)。如果确实需要绑定mount jenkins_home,确保容器内的jenkins用户(jenkins用户-uid 1000)可以访问主机上的目录,或者在docker运行时使用-u some_other_user参数。
所以他们建议使用Docker卷,而不是像你一样使用绑定挂载。如果你必须使用绑定挂载,你需要确保UID 1000可以读写主机目录。
最简单的解决方案是通过将-u root添加到docker run命令中以root身份运行容器,如下所示

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

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

相关问题