Docker Jenkins容器启动失败,提示卷权限异常求助
Jenkins容器启动失败排查与修复
问题详情
执行以下步骤部署Jenkins Docker容器后,容器始终处于退出状态,无法启动:
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进程占用(杀死后自动重建),但容器映射的是主机9080端口到容器8080端口:
java 2968 user 45u IPv6 0xbf254983f0051d87 0t0 TCP *:http-alt (LISTEN)
查看容器状态与日志,发现权限错误:
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. 修复目录权限
Jenkins容器内部以UID为1000的jenkins用户运行,主机上创建的/var/jenkins_home目录默认是root权限,导致容器内用户无法写入,这是启动失败的核心原因。执行以下命令修改目录权限:
sudo chown -R 1000:1000 /var/jenkins_home
2. 重建容器
先删除已失败的容器:
docker rm fc880ccd31ed
再重新启动容器:
docker run -p 9080:8080 -d -v /var/jenkins_home:/var/jenkins_home jenkins/jenkins
3. 端口占用说明
主机8080端口被占用不会影响当前容器启动,因为容器映射的是主机9080端口。若后续需要使用主机8080端口,再排查那个自动重建的Java进程(可通过systemctl list-units --type=service检查是否为系统服务,或查看定时任务)。
内容的提问来源于stack exchange,提问作者Emil11
相关产品推荐
相关产品推荐

