Gitlab CI-Fehler beheben: error during connect: Post http://docker:2375/v1.40/auth: dial tcp: lookup docker on ... no such host

English Deutsch

Problem:

In Ihren GitLab CI-Jobs sehen Sie diese Fehlermeldung beim Versuch, einen docker-Befehl auszuführen:

example-3.sh

Lösung

Dieser Fehler tritt bei Docker-basierten GitLab-Runnern auf, die mit einem docker-Executor konfiguriert sind. Die Fehlermeldung bedeutet, dass der innere Docker-Container keine Verbindung zum Host-docker-Daemon hat.

Um dies zu beheben, setzen Sie diese Optionen unter [runners.docker] in Ihrer gitlab-runner config.toml:

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

Eine gültige config.toml sieht so aus:

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

Warum das funktioniert

Das Hinzufügen von "/var/run/docker.sock:/var/run/docker.sock" ermöglicht es dem inneren Docker-Container, der innerhalb des gitlab-runner läuft, auf den äußeren (Host-)Docker-Daemon zuzugreifen. Ohne dies versucht er, sich mit der Docker-Standard-URL zu verbinden, d.h. http://docker:2375. Diese URL kann nicht über DNS aufgelöst werden (der DNS-Server in meinem Fall ist 192.168.178.1, der DNS-Standardport ist 53), daher gibt Docker die oben genannte Fehlermeldung aus.


Check out similar posts by category: Docker