GitLab CI/CD流水线部署报错:无法连接unix:///var/run/docker.sock的Docker daemon
Docker连接报错排查解决步骤
1. GitLab Runner权限排查
报错本质是CI流水线执行环境下的docker客户端无法连接docker服务,和AWS实例上运行的Docker服务无关,优先排查Runner配置:
- 若使用Shell执行器的GitLab Runner,检查运行runner进程的用户是否已加入docker用户组:
执行命令验证:groups gitlab-runner
若输出无docker组,执行修复命令:sudo usermod -aG docker gitlab-runner sudo systemctl restart gitlab-runner - 若使用Docker执行器的GitLab Runner,需在Runner的
config.toml配置中添加宿主机docker套接字挂载,示例配置:[[runners]] executor = "docker" [runners.docker] volumes = ["/var/run/docker.sock:/var/run/docker.sock", "/cache"] privileged = true
2. CI配置执行环境排查
- 检查
deploy-api-staging阶段使用的基础镜像是否预装docker客户端,若使用无docker的轻量镜像(如alpine),需在脚本开头添加docker客户端安装步骤,或直接更换为docker:latest作为阶段镜像。 - 若使用Docker-in-Docker(DinD)模式执行流水线,需在CI配置中声明
docker:dind服务,并配置DOCKER_HOST环境变量为tcp://docker:2376,避免客户端默认走unix套接字连接。
3. 脚本执行上下文排查
- 若流水线是通过SSH远程连接到AWS实例执行脚本,需确认SSH登录的远程用户已加入AWS实例的docker用户组,可在脚本开头添加测试命令验证远程执行环境:
whoami docker info ls -l /var/run/docker.sock - 若测试命令显示docker.sock文件存在但docker info报错,即为用户权限问题,给远程执行用户添加docker组权限即可修复。
内容的提问来源于stack exchange,提问作者Jay Vyas
相关产品推荐
相关产品推荐

