How to fix Gitlab CI error during connect: Post http://docker:2375/v1.40/auth: dial tcp: lookup docker on ... no such host
Problem:
In your GitLab CI jobs, you see this error message while trying to run some docker
command:
error during connect: Post http://docker:2375/v1.40/auth: dial tcp: lookup docker on 192.168.178.1:53: no such host
Solution
This error occurs with docker-based gitlab runners such as the one we’re that are configured using a docker
executor. The error message means that the inner docker container doesn’t have a connection to the host docker
daemon.
In order to fix this, set these options in [runners.docker]
in your gitlab-runner config.toml
:
privileged = true
volumes = ["/cache", "/var/run/docker.sock:/var/run/docker.sock"]
A valid config.toml
looks like this:
concurrent = 1
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
Why this works
Adding "/var/run/docker.sock:/var/run/docker.sock"
allows the inner docker container running inside the gitlab-runner
to access the outer (host) docker daemon. Without this, it tries to connect to the docker default URL, i.e. http://docker:2375
. This URL can’t be resolved via DNS (the DNS server in my case is 192.168.178.1
, the DNS standard port being 53
), hence docker prints the error message listed above.