Workaround for gitlab-runner issue #2408 “Cannot connect to the Docker daemon”

TL;DR; Change your pull policy to “if-not-present” or “never”.

Our Continuous Deployment pipeline at Wysiwyg worked fine, until it stopped working. It started giving errors like this:

Pulling docker image registry.gitlab.com/wysiwygoy/dev/cd-deploy ...
ERROR: Preparation failed: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

A bit of googling resulted in gitlab-runner issue #2408. I tried some of the suggestions in the thread but couldn’t get it working.

Finally I found a workaround: Because it fails when pulling my custom image from gitlab.com registry, I changed the pull policy of the runner (in config.toml of the runner) to “if-not-present”. The executor then skips pulling the image and executes its actual job just fine.

I suspect that gitlab.com registry responds too slowly and the docker client library gives up with the error mentioned above.

The downside of course is that if I update my executor image I need to pull the new image manually. In practice it doesn’t happen that often, so I can live with that until the fix to gitlab-runner is in.

I posted my finding as a comment to the issue.