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

DigitalOcean上GitLab特定Runner报错lookup docker: no such host如何解决

报错原因
  • 配置逻辑冲突:你同时配置了两种Docker调用方式:gitlab-ci.yml里声明了docker:dind服务、指定Docker访问地址为tcp://docker:2375;而config.toml里又挂载了宿主机的/var/run/docker.sock套接字,两套配置互相冲突。
  • DIND服务无法启动:如果你要使用Docker-in-Docker(dind)方案,Docker executor必须开启privileged=true权限,你当前配置中该参数为false,导致dind服务启动失败,CI作业自然无法解析docker这个服务主机名,从而抛出DNS解析失败的报错。
  • 多余的环境变量配置:如果你打算直接使用宿主机的Docker服务(挂载套接字的方式),就不需要配置DOCKER_HOST环境变量,Docker默认会读取本地的/var/run/docker.sock文件。
修复方案

两种方案二选一即可,不要混合配置:

方案1:使用宿主机Docker套接字(更推荐,性能更高、配置更简单)

  1. 修改.gitlab-ci.yml,删除以下配置段:
services:
  - docker:dind
  # - docker:18-dind

variables:
  DOCKER_HOST: tcp://docker:2375
  DOCKER_DRIVER: overlay2
  DOCKER_TLS_CERTDIR: ""
  1. 确认config.toml中保留volumes = ["/cache","/var/run/docker.sock:/var/run/docker.sock"]配置,privileged参数保持false即可。
  2. 重启GitLab Runner服务生效:gitlab-runner restart

方案2:使用Docker-in-Docker(dind)方案

  1. 修改config.toml,将[runners.docker]下的privileged = false改为privileged = true,同时删除volumes中的/var/run/docker.sock:/var/run/docker.sock挂载项避免冲突。
  2. 保留.gitlab-ci.yml中现有的dind服务配置、DOCKER开头的环境变量配置。
  3. 重启GitLab Runner服务生效:gitlab-runner restart
可选优化项

你看到的WARNING! Using --password via the CLI is insecure只是安全警告,不影响执行,如果要消除该警告,可以将docker login命令修改为:

echo $CI_JOB_TOKEN | docker login -u $CI_REGISTRY_USER --password-stdin $CI_REGISTRY

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 04:39:05