一直在尝试构建一个简单的 gitlab CI 管道,该管道构建图像并将其推送到 Google 容器存储库。我遇到了这个错误 -
ERROR: error during connect: Get "http://docker:2375/v1.24/info": dial tcp: lookup docker on 169.254.169.254:53: no such host
我已经尝试了 gitlab 问题线程中发布的所有解决方案,但没有帮助。我正在使用公共(public)运行者,这是一个非常简单的 ci 脚本。
image: docker:latest
variables:
GCR_IMAGE: <GCR_IMAGE>
services:
- docker:dind
build:
stage: build
before_script:
- docker info
- echo $GOOGLE_CLOUD_ACCOUNT | docker login -u _json_key --password-stdin https://us.gcr.io
script:
- docker build -t $GCR_IMAGE:latest .
- docker push $GCR_IMAGE:$CI_COMMIT_SHA
相关问题线程:https://gitlab.com/gitlab-org/gitlab-runner/-/issues/4794
使用gitlab-runner 15.7.1
最佳答案
几周前我遇到了这个问题,并通过以下方法解决了它:
image:
name: docker:20.10.16
services:
- name: docker:20.10.16-dind
variables:
DOCKER_HOST: tcp://docker:2376/
DOCKER_TLS_CERTDIR: "/certs"
DOCKER_TLS_VERIFY: 1
DOCKER_CERT_PATH: "$DOCKER_TLS_CERTDIR/client"
before_script:
- until docker info; do sleep 1; done
- echo $GOOGLE_CLOUD_ACCOUNT | docker login -u _json_key --password-stdin https://us.gcr.io
script:
- docker build -t $GCR_IMAGE:latest .
- docker push $GCR_IMAGE:$CI_COMMIT_SHA
同时将此配置添加到运行器
[[runners]]
[runners.kubernetes]
namespace = "{{.Release.Namespace}}"
image = "ubuntu:20.04"
[[runners.kubernetes.volumes.empty_dir]]
name = "docker-certs"
mount_path = "/certs/client"
medium = "Memory"
关于docker - 无法在 gitlab CI 中构建 docker 镜像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74958598/