由于 DNS 错误导致 GitLab CI Docker 登录失败

问题描述 投票:0回答:1

我正在使用单个 GitLab Runner 运行 GitLab CI/CD 管道。我的 gitlab-ci.yml 包含额外的主机,这些主机似乎应用正确,但我在 Docker 登录步骤中遇到了问题。

这是我的 gitlab-ci.yml 的相关部分:

stages:
  - build

default:
  tags:
    - shared

variables:
  DOCKER_IMAGE: "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG"

build:
  stage: build
  image: docker:latest
  services:
    - docker:dind
  script:
    - cat /etc/hosts
    - ping -c 4 10.10.30.2    
    - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
    - docker build -t $DOCKER_IMAGE .
    - docker push $DOCKER_IMAGE
  only:
    - branches

运行器的 config.toml 包含此 extra_hosts 配置:

extra_hosts = ["gitlab.example.com:10.10.30.2", "registry.gitlab.example.com:10.10.30.2"]

管道输出确认主机条目设置正确:

10.10.30.2 gitlab.example.com
10.10.30.2 registry.gitlab.example.com

但是,当尝试运行 docker login 时,出现以下错误:

Error response from daemon: Get "https://registry.gitlab.example.com/v2/": dial tcp: lookup registry.gitlab.example.com on 193.110.81.0:53: no such host

Docker 似乎无法识别 extra_hosts 条目,而是尝试使用外部 DNS 服务器解析注册表 URL。

如何确保 Docker 使用 extra_hosts 中为我的注册表 URL 设置的正确主机配置?

docker gitlab gitlab-ci gitlab-ci-runner
1个回答
0
投票

解决方案

基于在线解决方案(感谢 Aroon),此修复通过添加以下行解决了 Docker 忽略 GitLab Runner Build-Container 内的 /etc/hosts 文件的问题 到 Docker 主机上的 /etc/hosts 文件

10.10.30.2 registry.gitlab.example.com
这不是最理想的解决方案,但目前可以作为一种可行的解决方法。

© www.soinside.com 2019 - 2024. All rights reserved.