Docker in GitLab CI macht Probleme
Wenn in Ihren GitLab CI/CD-Pipeline-Logs der folgende Fehler auftritt:
error during connect: Get "http://docker:2375/v1.51/info": dial tcp: lookup docker on <ip_edited>:53: server misbehaving
…dann versuchen Sie mit hoher Wahrscheinlichkeit, Docker-in-Docker zu verwenden.
Die Ursache dieses Fehlers liegt meist in der GitLab-Runner-Konfiguration – genauer gesagt in der Einstellung network_mode in der Datei config.toml. Wenn Sie network_mode manuell konfiguriert haben, kann diese Einstellung Docker daran hindern, den Hostnamen docker aufzulösen, der für die Kommunikation mit dem Docker-Daemon verwendet wird.
In den meisten Fällen löst das vollständige Entfernen der Zeile network_mode aus der config.toml Ihres Runners das Problem. GitLab Runner erstellt standardmäßig für jeden Job ein eigenes Docker-Netzwerk, das eine korrekte DNS-Auflösung und Kommunikation zwischen den Containern (einschließlich des Docker-Daemons) sicherstellt. Wenn Sie dieses Verhalten mit einem benutzerdefinierten Netzwerkmodus überschreiben, kann das diese Isolation aufheben oder die erwartete Namensauflösung verhindern.
Öffnen Sie also die Konfigurationsdatei Ihres Runners (normalerweise unter /etc/gitlab-runner/config.toml) und entfernen oder kommentieren Sie eine Zeile wie diese aus:
[[runners]]
executor = "docker"
[runners.docker]
network_mode = "host" <-- this is line which you should remove
Normalerweise erfordert GitLab Runner keinen Neustart, aber es schadet nicht, ihn trotzdem durchzuführen – deshalb hier zur Erinnerung:
service gitlab-runner restart
Weitere Informationen finden Sie in der offiziellen GitLab-Dokumentation:
- https://docs.gitlab.com/runner/executors/docker/#create-a-network-for-each-job