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.