本地Bitbucket Runner构建Docker遇连接问题,求配置方案
问题:本地Bitbucket Runner执行Docker构建失败,无法连接Docker守护进程
执行docker build时出现如下错误:
+ docker build -t my_app . failed to dial gRPC: cannot connect to the Docker daemon. Is 'docker daemon' running on this host?: dial tcp 127.0.0.1:2375: connect: connection refused
当前Pipeline配置:
# definitions: # services: # docker: # image: docker:dind # options: # docker: true pipelines: default: - step: runs-on: - self.hosted - linux.shell # services: # - docker script: - echo $HOSTNAME - export DOCKER_BUILDKIT=1 - docker build -t my_app .
已尝试的配置及问题:
- 配置
definitions.services.docker为docker:find(拼写错误),报错:Cannot connect to the Docker daemon at tcp://localhost:2375. Is the docker daemon running? - 添加
services: - docker到step中,问题未解决
询问:如何在本地PC Runner上配置并完成Docker构建?是否可行?
解决方案
本地self-hosted Runner完全可以执行Docker构建,问题出在错误套用了Bitbucket托管Runner的Docker配置,且未确保Runner能访问本地Docker守护进程,按以下步骤修复:
确认本地Docker守护进程处于运行状态
- Linux系统执行:
systemctl status docker查看状态;未运行则执行systemctl start docker启动 - Windows/macOS直接检查Docker Desktop是否处于开启状态
- Linux系统执行:
给Runner用户添加Docker权限
- 执行命令将Runner运行用户加入docker用户组:
sudo usermod -aG docker $USER - 重启Bitbucket Runner服务,或者重新登录用户,让权限生效
- 执行命令将Runner运行用户加入docker用户组:
简化Pipeline配置,移除不必要的Docker服务相关内容
本地Runner不需要依赖Bitbucket提供的docker:dind服务,直接使用本地已有的Docker守护进程即可,最终Pipeline配置如下:pipelines: default: - step: runs-on: - self.hosted - linux.shell script: - echo $HOSTNAME - export DOCKER_BUILDKIT=1 - docker build -t my_app .(可选)指定Docker端点(如果本地Docker非默认配置)
如果本地Docker未使用默认的Unix套接字,可在Pipeline脚本中添加环境变量指定端点:export DOCKER_HOST=unix:///var/run/docker.sock
内容的提问来源于stack exchange,提问作者Amir
相关产品推荐
相关产品推荐

