我已经建立了一个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?
1条答案
按热度按时间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身份运行容器,如下所示但是这并不安全,因此根据您运行容器的环境,这可能不是一个好主意。