AWS Runner执行CI任务时docker:2375连接报错no such host如何解决
问题根因
你遇到的报错是CI任务无法解析docker主机名,无法连接DinD服务的Docker API端口,常见于GitLab CI DinD模式下服务别名未生效、Runner配置错误两种场景。
可行解决方案
方案1:显式指定DinD服务别名(保留DinD模式)
直接修改你的CI配置的services段,显式绑定别名到docker,确保主机名能正确解析:
services: - name: docker:dind alias: docker
修改后验证:
- 确认
DOCKER_TLS_CERTDIR: ""配置保留,使用非加密2375端口通信 - 修改Runner配置后务必执行
sudo gitlab-runner restart重启服务生效 - 可在
before_script中添加nslookup docker验证解析是否正常
方案2:改用宿主机Docker套接字(更稳定,推荐AWS Runner场景)
该方案完全放弃DinD模式,直接复用AWS Runner宿主机的Docker服务,无解析问题,性能更高:
- 登录部署GitLab Runner的AWS EC2实例,执行以下配置:
- 确保EC2已安装Docker,执行
usermod -aG docker gitlab-runner给Runner用户赋Docker权限 - 编辑Runner配置文件
/etc/gitlab-runner/config.toml,找到runners.docker段,修改volumes配置:volumes = ["/var/run/docker.sock:/var/run/docker.sock", "/cache"] - 执行
sudo gitlab-runner restart重启Runner生效
- 确保EC2已安装Docker,执行
- 修改你的CI配置:
- 删除
DOCKER_HOST、DOCKER_DRIVER、DOCKER_TLS_CERTDIR三个变量 - 删除整个
services段,不需要再加载DinD服务
- 删除
两种方案任选其一都可以解决你遇到的域名解析报错,优先推荐方案2,避免DinD带来的性能损耗和各类网络兼容问题。
内容的提问来源于stack exchange,提问作者Dinesh
相关产品推荐
相关产品推荐

