gpt4 book ai didi

Docker DIND 无法访问私有(private)注册表

转载 作者:行者123 更新时间:2023-12-02 20:11:31 27 4
gpt4 key购买 nike

我正在使用 GitLab 以及 GitLab runner 和 DIND。

配置细节:

---------------------------------------

docker run --privileged --name gitlab-dind -d --restart=always docker:17.07-dind

---------------------------------------

cat gitlab_runner.sh
docker run -d --name gitlab-runner --restart always \
-v /mnt/data/gitlab/gitlab-runner:/etc/gitlab-runner \
--link gitlab-dind:docker \
gitlab/gitlab-runner:v9.5.0

---------------------------------------

cat /mnt/data/gitlab/gitlab-runner/config.toml
concurrent = 1
check_interval = 0

[[runners]]
name = "RunnerA"
url = "https://gitlab.dev.abc.net"
token = "d8ed43a69ebed74ccab2493857d8cb"
executor = "docker"
[runners.docker]
tls_verify = false
image = "docker:17.07"
privileged = false
disable_cache = false
volumes = ["/cache"]
host = "tcp://gitlab-dind:2375"
shm_size = 0
[runners.cache]

---------------------------------------

cat ~/wksp/test-proj/.gitlab-ci.yml
image: docker.artifactory.abc.net/docker:17.07

variables:
DOCKER_HOST: tcp://docker:2375

# This before_script block was added later but it seems this block
# isn't executed before the DIND tries fetching image from Artifactory
before_script:
- docker login -u svc-art-user -p some-pwd docker.artifactory.abc.net
- docker info

services:
- docker.artifactory.abc.net/docker:17.07-dind

build:
stage: build
script:
- docker build -t my-docker-node-image .

---------------------------------------

顺便说一句,在上述配置中,是 DOCKER_HOST .gitlab-ci.yml 中需要配置或只是 host = "tcp://gitlab-dind:2375 中的条目 ( config.toml )够了吗?

现在,当运行者运行时,我收到以下错误:
Runner log error:
Running with gitlab-ci-multi-runner 9.5.0 (413da38)
on RunnerA (d8ed43a6)
Using Docker executor with image docker.artifactory.abc.net/docker:17.07 ...
Starting service docker.artifactory.abc.net/docker:17.07-dind ...
Pulling docker image docker.artifactory.abc.net/docker:17.07-dind ...
ERROR: Preparation failed: Error response from daemon: Get https://docker.artifactory.abc.net/v2/: x509: certificate signed by unknown authority

我可能错了,但似乎此错误是因为服务帐户( svc-art-user )在 DIND 图像提取发生之前无法登录。

最佳答案

您需要向 Gitlab Runner 提供身份验证详细信息,因为它需要提取图像。

您需要创建 DOCKER_AUTH_CONFIG具有以下身份验证详细信息的 secret 变量

{
"auths": {
"docker.artifactory.abc.net": {
"auth": "bXlfdXNlcm5hbWU6bXlfcGFzc3dvcmQ="
}
}
}

这可以通过在本地登录 docker 并检查 ~/.docker/config.json 来获得。

该文档提供了很好的详细信息

https://docs.gitlab.com/ce/ci/docker/using_docker_images.html#define-an-image-from-a-private-docker-registry

https://docs.gitlab.com/runner/configuration/advanced-configuration.html#using-a-private-container-registry

关于Docker DIND 无法访问私有(private)注册表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46524774/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com