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

Docker中部署的Jenkins连接Docker Daemon报connection refused如何解决

问题原因
  • docker: not found报错是因为Jenkins容器内部默认没有内置Docker客户端二进制文件,你虽然在全局工具配置中设置了Docker自动安装,但如果没有在Pipeline中显式调用该全局工具的Docker路径,任务执行时会默认读取系统PATH中的Docker命令,自然找不到对应文件。
  • 后续无法连接Docker Daemon的报错是由Docker的C/S架构特性导致:你的Windows本地直接安装的Jenkins可以直接访问本机运行的Docker Daemon服务,但容器内运行的Jenkins默认没有可访问的Docker服务端,就算安装了Docker客户端也无法完成调用。
解决方案

方案一:挂载宿主机Docker(推荐,配置简单资源占用低)

该方案直接复用宿主机的Docker服务,不需要在Jenkins容器内额外安装Docker:

  • 停止当前运行的Jenkins容器,重新启动时添加两个挂载参数:
    • 挂载宿主机Docker客户端二进制到容器:添加启动参数 -v /usr/bin/docker:/usr/bin/docker
    • 挂载宿主机Docker套接字文件到容器,让容器内客户端可以直接和宿主机Daemon通信:添加启动参数 -v /var/run/docker.sock:/var/run/docker.sock
  • 解决套接字权限问题:容器启动后执行命令 docker exec -u root -it [你的Jenkins容器名称] chmod 666 /var/run/docker.sock
  • 重启Jenkins后重新运行Pipeline即可,不需要额外修改Docker插件的Daemon连接地址。

方案二:Docker in Docker独立部署(适合需要隔离Docker环境的场景)

  • 启动Jenkins容器时添加--privileged特权参数,允许容器内运行Docker服务
  • 进入Jenkins容器内部手动安装Docker服务,并配置Docker服务开机自启
  • 配置Jenkins Docker插件的Daemon地址为unix:///var/run/docker.sock即可正常连接。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 13:51:01