You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 18:35:32