GitLab本地Runner无法连接Docker守护进程问题求助
GitLab Runner无法连接Docker守护进程问题解决
我在使用本地GitLab Runner时遇到无法连接Docker守护进程的问题,给Docker服务添加别名后仍失败,报错信息如下:
ERROR: Cannot connect to the Docker daemon at tcp://docker:2375/. Is the docker daemon running?
ERROR: Cannot connect to the Docker daemon at tcp://thealias:2375/. Is the docker daemon running?
我的配置文件
.gitlab-ci.yml
push_image: image: docker:20.10.16-dind services: - docker:20.10.16-dind before_script: - docker info - docker login ext_registry.com -u $NEXUS_USER -p $NEXUS_PASS script: - docker build -t ext_registry.com.liberty.edu:5000/occ/groupsyncer:latest .
gitlab-runner.toml
[[runners]] name = "docker-runner" url = "https://gitlab.example.com/" token = REDACTED executor = "docker" cache_dir="/cache" clone_url = "https://gitlab.example.com" [runners.custom_build_dir] [runners.cache] [runners.cache.s3] [runners.cache.gcs] [runners.cache.azure] [runners.docker] volumes = ["/opt/gitlab-runner/cache:/cache:rw"] tls_verify = false image = "docker:20.10.16" privileged = true disable_entrypoint_overwrite = false oom_kill_disable = false disable_cache = false shm_size = 0
解决方法
修正.gitlab-ci.yml配置
不要同时将docker:dind作为job镜像和服务使用,应该用普通的docker镜像作为job运行环境,docker:dind作为后台服务。同时显式设置Docker环境变量避免连接问题:push_image: image: docker:20.10.16 services: - name: docker:20.10.16-dind alias: docker variables: DOCKER_HOST: tcp://docker:2375 DOCKER_TLS_CERTDIR: "" before_script: - docker info - docker login ext_registry.com -u $NEXUS_USER -p $NEXUS_PASS script: - docker build -t ext_registry.com.liberty.edu:5000/occ/groupsyncer:latest .确认Runner配置有效性
你的gitlab-runner.toml中已经设置了privileged = true,这是docker:dind运行的必要条件。修改配置后重启Runner服务:gitlab-runner restart检查主机Docker服务状态
在GitLab Runner所在主机上,确认Docker守护进程正在运行:systemctl status docker若未运行,启动服务:
systemctl start docker
内容的提问来源于stack exchange,提问作者Brandon Kauffman
相关产品推荐
相关产品推荐

