You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu下Jenkins任务执行docker-compose失败的问题咨询

问题排查与解决

1. Jenkins任务执行docker-compose失败,但主机jenkins用户执行正常的原因

你已经把jenkins用户加入docker组了,但这里有个容易忽略的细节:Jenkins服务进程并没有自动更新组权限。当你用usermod -aG docker jenkins添加用户到组后,只有新启动的进程会继承新的组身份,而Jenkins服务是在你修改组之前就运行的,所以它的进程还没有docker组的权限,自然没法连接Docker守护进程。

解决方法很简单,重启Jenkins服务让它加载新的权限:

sudo systemctl restart jenkins

重启后再跑一遍Jenkins任务,应该就能正常执行docker-compose了。

你也可以验证一下权限是否生效:

# 查看jenkins用户的组列表
sudo su - jenkins -c "groups"
# 查看Jenkins进程的有效组
ps aux | grep jenkins | grep -v grep

如果输出里包含docker组,说明权限已经到位了。

2. 为什么会出现docker-machine start default的提示?

这个提示其实是Docker客户端的“误判”。当Docker客户端找不到正确的连接配置(比如本地套接字的访问权限,或者DOCKER_HOST环境变量)时,会默认尝试去查找docker-machine的默认虚拟机配置,所以才弹出这个提示。

而你在主机上直接用jenkins用户执行时,shell环境已经自动加载了Docker的本地配置(通过/var/run/docker.sock套接字连接),并且jenkins用户此时已经有docker组权限,所以不会触发这个错误提示。

解决这个问题的核心还是解决前面的权限问题——让Jenkins进程拥有docker组权限,这样Docker客户端就能通过本地套接字正常连接守护进程,也就不会再提示docker-machine了。

额外排查点(如果重启后还是有问题)

检查Docker套接字的权限是否正确:

ls -l /var/run/docker.sock

正常情况下,它的所属组应该是docker,权限是rw-rw----。如果不是,可以手动调整:

sudo chown root:docker /var/run/docker.sock
sudo chmod 660 /var/run/docker.sock

内容的提问来源于stack exchange,提问作者v v

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 04:13:52