在Jenkins Docker容器内运行Docker遇启动问题求助
解决方案
方法一:挂载宿主机Docker套接字(推荐)
这是最常用且稳定的方案,无需在Jenkins容器内启动Docker守护进程,直接复用宿主机的Docker环境:
- 停止当前Jenkins容器:
docker stop <jenkins-container-name> - 若需要,删除旧容器:
docker rm <jenkins-container-name> - 重新启动Jenkins容器,挂载宿主机的Docker套接字和Docker命令:
docker run -d \ --name jenkins \ -p 8080:8080 \ -p 50000:50000 \ -v /var/run/docker.sock:/var/run/docker.sock \ -v /usr/bin/docker:/usr/bin/docker \ -v jenkins_home:/var/jenkins_home \ jenkins/jenkins:lts - 进入容器验证:
docker exec -it jenkins bash,直接执行docker ps,即可查看宿主机的容器列表,说明Docker命令已正常可用。
方法二:在容器内启动Docker守护进程(不推荐,仅作参考)
如果必须在容器内运行Docker守护进程,需要赋予容器特权并手动启动:
- 启动容器时添加
--privileged参数(赋予容器宿主机级别的权限):docker run -d \ --name jenkins \ --privileged \ -p 8080:8080 \ -p 50000:50000 \ -v jenkins_home:/var/jenkins_home \ jenkins/jenkins:lts - 进入容器后,手动启动Docker守护进程:
dockerd & - 等待几秒后,执行
docker ps验证是否正常运行。
问题原因说明
- 容器默认的PID 1进程是Jenkins,而非systemd,因此
systemctl命令无法正常工作,这就是你遇到System has not been booted with systemd as init system错误的核心原因。 service docker start依赖完整的init系统管理进程,容器内没有这套环境,所以启动Docker服务会失败。
内容的提问来源于stack exchange,提问作者Hassan Raza
相关产品推荐
相关产品推荐

