Runner를 shell이 아니라 Docker 안에서 Docker를 빌드하기 위해 docker로 등록하는 경우 발생한 에러입니다. 에러 메시지는 아래와 같이 나오는데요.
error during connect: Post http://docker:2375/v1.40/auth: dial tcp: lookup docker on 8.8.8.8:53: no such host Cleaning up project directory and file based variables 00:01 ERROR: Job failed: exit code 1
위 에러는 Runner를 생성할 때 아래와 같은 기본 명령으로 생성하는 경우에 발생한 문제입니다.
sudo gitlab-runner register --url https://gitlab.example.com/ --registration-token GR134894~~~~
문제해결을 위해 이미 등록된 runner config를 수정하려면 아래 파일을 수정해야합니다.
/etc/gitlab-runner/config.toml
[[runners]] name = "gitlab.example.com" url = "https://gitlab.example.com/" token = "yinWhxe------" executor = "docker" [runners.custom_build_dir] [runners.cache] [runners.cache.s3] [runners.cache.gcs] [runners.cache.azure] [runners.docker] tls_verify = false image = "docker:19.03.12" privileged = false disable_entrypoint_overwrite = false oom_kill_disable = false disable_cache = false volumes = ["/cache"] shm_size = 0
위 설정에 보면 privileged = false 로 설정되어 있는데 이를 true로 변경해주면 됩니다. 변경된 설정을 적용하기 위해서는 gitlab-runner를 restart 해주어야 합니다.
sudo gitlab-runner restart
이런 문제를 미리 방지하기 위해서는 아래와 같이 –docker-privileged 옵션을 적용해서 runner를 생성하면 됩니다.
sudo gitlab-runner register -n \ --url https://gitlab.com/ \ --registration-token REGISTRATION_TOKEN \ --executor docker \ --description "My Docker Runner" \ --docker-image "docker:19.03.12" \ --docker-privileged \ --docker-volumes "/certs/client"
참고
- https://nearhome.tistory.com/141
- https://docs.gitlab.com/ee/ci/docker/using_docker_build.html#use-docker-in-docker
- https://forum.gitlab.com/t/error-during-connect-post-http-docker-2375-v1-40-auth-dial-tcp-lookup-docker-on-169-254-169-254-no-such-host/28678/5