GitLab CI/CD配置Docker环境报错:无法解析docker主机地址
问题分析与解决方案
这个错误并非预期情况,核心原因是Docker客户端在尝试连接默认主机名docker,但你的CI环境中该主机不存在(你给dind服务设置了自定义别名thedockerhost),同时可能伴随TLS配置或端口不匹配的问题。以下是具体修复方案:
方案1:使用默认服务名(推荐)
移除自定义别名,直接使用GitLab CI为dind服务分配的默认主机名docker,简化配置并避免别名带来的解析问题:
default: image: docker:latest services: - docker:dind # 去掉自定义alias,使用默认主机名docker variables: DOCKER_HOST: tcp://docker:2376 # TLS启用状态下默认端口为2376 DOCKER_TLS_CERTDIR: "/certs" DOCKER_DRIVER: overlay2 IMAGE_TAG: $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG before_script: - docker info stages: - build build: stage: build script: - echo "Building and tagging Docker images..."
方案2:保留自定义别名的正确配置
如果坚持使用thedockerhost别名,需确保TLS配置与端口匹配:
禁用TLS的配置
default: image: docker:latest services: - name: docker:dind alias: thedockerhost variables: DOCKER_HOST: tcp://thedockerhost:2375 # 禁用TLS后使用2375端口 DOCKER_TLS_CERTDIR: "" # 显式禁用TLS DOCKER_DRIVER: overlay2 IMAGE_TAG: $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG before_script: - docker info stages: - build build: stage: build script: - echo "Building and tagging Docker images..."
启用TLS的配置
default: image: docker:latest services: - name: docker:dind alias: thedockerhost variables: DOCKER_HOST: tcp://thedockerhost:2376 # 启用TLS后使用2376端口 DOCKER_TLS_CERTDIR: "/certs" DOCKER_DRIVER: overlay2 IMAGE_TAG: $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG before_script: - docker info stages: - build build: stage: build script: - echo "Building and tagging Docker images..."
额外检查项
确保你的GitLab Runner配置满足以下条件:
- 使用
docker执行器 - 开启
privileged: true(dind服务需要特权模式才能正常运行)
内容的提问来源于stack exchange,提问作者user2824374
相关产品推荐
相关产品推荐

