使用GitLab共享Runner构建Docker镜像时遇docker主机不存在错误求助
解决GitLab共享Runner构建Docker镜像时的“主机不存在”错误
错误原因
你碰到的dial tcp: lookup docker on XXX.XXX.XXX.XXX:XX: no such host错误,核心是Docker客户端无法连接到DinD(Docker-in-Docker)服务的docker主机,通常和共享Runner配置限制、DinD的TLS/端口设置不匹配有关。
修复方案
1. 确认共享Runner支持DinD
GitLab共享Runner默认可能未开启特权模式,而DinD必须在特权模式下运行。需要确保Runner配置包含:
privileged = true- 挂载
/certs/client卷(用于TLS证书共享)
2. 调整CI配置的环境变量与版本匹配
新版DinD默认启用TLS,使用2376端口,而非旧版的2375。同时要保证Docker镜像和DinD服务版本一致,修改后的配置如下:
docker:image: stage: test image: docker:20.10.16 # 和DinD服务版本统一 services: - docker:dind:20.10.16 variables: DOCKER_HOST: tcp://docker:2376 DOCKER_TLS_CERTDIR: "/certs" script: - docker info
如果需要临时关闭TLS调试,可以给DinD服务添加命令参数:
services: - name: docker:dind:20.10.16 command: ["--tls=false"]
3. 调试网络解析
如果问题仍存在,可在script中添加网络检测命令,确认docker主机是否能被正常解析:
script: - nslookup docker - docker info
内容的提问来源于stack exchange,提问作者jasmes
相关产品推荐
相关产品推荐

