如何修复 Gitlab CI error during connect: Post http://docker:2375/v1.40/auth: dial tcp: lookup docker on ... no such host

问题:

在你的 GitLab CI 作业中,尝试运行某些 docker 命令时,你看到此错误消息:

example-3.sh

解决方案

此错误发生在使用 docker 执行器配置的基于 docker 的 gitlab runner 上。错误消息意味着内部 docker 容器没有连接到主机 docker 守护进程。

为了修复此问题,在你的 gitlab-runner config.toml[runners.docker] 中设置这些选项:

example-2.txt
volumes = ["/cache", "/var/run/docker.sock:/var/run/docker.sock"]

有效的 config.toml 如下所示:

example-1.ini
check_interval = 0

[session_server]
  session_timeout = 1800

[[runners]]
  name = "CoreOS-Haar-Runner"
  url = "https://gitlab.techoverflow.net/"
  token = "bemaiBie8usahMoo9ish"
  executor = "docker"
  [runners.custom_build_dir]
  [runners.cache]
    [runners.cache.s3]
    [runners.cache.gcs]
    [runners.cache.azure]
  [runners.docker]
    tls_verify = false
    image = "docker:stable"
    privileged = true
    disable_entrypoint_overwrite = false
    oom_kill_disable = false
    disable_cache = false
    volumes = ["/cache", "/var/run/docker.sock:/var/run/docker.sock"]
    shm_size = 0

为什么这有效

添加 "/var/run/docker.sock:/var/run/docker.sock" 允许在 gitlab-runner 内运行的内部 docker 容器访问外部(主机)docker 守护进程。没有这个,它尝试连接到 docker 默认 URL,即 http://docker:2375。此 URL 无法通过 DNS 解析(在我的情况下 DNS 服务器是 192.168.178.1,DNS 标准端口为 53),因此 docker 打印上面列出的错误消息。


Check out similar posts by category: Docker