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

Jenkins Shell步骤中Docker命令执行失败问题求助

解决Jenkins执行Docker命令失败的问题

我之前也碰到过一模一样的情况!直接用tomcat用户在终端跑docker run hello-world完全没问题,但Jenkins执行就报错连不上Docker daemon,核心原因大多是Jenkins进程没有加载到tomcat用户更新后的组权限,或者Docker socket的权限配置有问题,给你几个排查和解决的步骤:

1. 先确认Jenkins执行时的组信息

在Jenkins的shell步骤里先添加一行id命令,看看tomcat用户的组列表里有没有docker:

whoami
id
docker -v
docker run hello-world

如果id的输出里找不到docker组,说明Jenkins的进程还没获取到tomcat用户的组变更——因为执行sudo usermod -aG docker tomcat后,当前已运行的进程不会自动更新组权限,Jenkins就是这种情况。

2. 重启Jenkins服务

直接重启Jenkins,让它重新读取tomcat用户的组信息:

sudo systemctl restart jenkins

重启后再重新运行Jenkins任务,这时候Jenkins就能加载到tomcat新加入的docker组权限了。

3. 检查Docker Socket的权限

有时候Docker daemon的socket文件权限会出问题,导致即使在docker组里也访问不了。执行以下命令查看权限:

ls -l /var/run/docker.sock

正常输出应该类似:

srw-rw----. 1 root docker 0 Aug 20 10:00 /var/run/docker.sock

如果输出里的组不是docker,就执行下面的命令修正权限:

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

修正后再重新运行任务试试。

4. 额外尝试:加载登录shell环境

少数情况下,Jenkins的默认shell环境没有加载用户的完整配置,你可以在shell步骤里用登录shell来执行Docker命令:

bash -l -c 'docker run hello-world'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:08:08