在为GitLab Runner提取图像之前,Docker登录

在为GitLab Runner提取图像之前,Docker登录,docker,gitlab,gitlab-ci-runner,Docker,Gitlab,Gitlab Ci Runner,我已经设置了docker runner,我想在其中运行存储在本地存储库中的图像。My/etc/gitlab runner/config.toml是 concurrent = 1 check_interval = 0 [session_server] session_timeout = 1800 [[runners]] name = "Docker runner" url = "https://gitlab.str.corp/" tok

我已经设置了docker runner,我想在其中运行存储在本地存储库中的图像。My/etc/gitlab runner/config.toml是

concurrent = 1
check_interval = 0

[session_server]
  session_timeout = 1800


[[runners]]
  name = "Docker runner"
  url = "https://gitlab.str.corp/"
  token = "*secret*"
  executor = "docker"
  [runners.custom_build_dir]
  [runners.cache]
    [runners.cache.s3]
    [runners.cache.gcs]
    [runners.cache.azure]
  [runners.docker]
    tls_verify = false
    image = "gitlab.example.com:4443/docker:19.03.1-dind"
    privileged = true
    disable_entrypoint_overwrite = false
    oom_kill_disable = false
    disable_cache = false
    volumes = ["/certs/client", "/cache"]
    shm_size = 0
当我提交作业时,它从runner开始,但无法提取图像:

Running with gitlab-runner 13.4.0 (4e1f20da)
  on Docker runner abcde123

Preparing the "docker" executor
Using Docker executor with image gitlab.example.com:4443/docker:19.03.8-git ...
Starting service gitlab.example.com/docker:19.03.1-dind ...
Authenticating with credentials from /root/.docker/config.json
Pulling docker image gitlab.example.com:4443/docker:19.03.1-dind ...
ERROR: Job failed: Error response from daemon: pull access denied for gitlab.example.com:4443/docker, repository does not exist or may require 'docker login': denied: requested access to the resource is denied (docker.go:142:0s)
docker登录是问题所在。如果我尝试从命令行执行
docker pull
,我会得到相同的错误。docker登录后,我可以拉取图像

我非常确定,在拉取图像之前,我只需要执行
echo$CI_JOB_TOKEN | docker login-u gitlab CI TOKEN--password stdin$CI_REGISTRY
,但我不知道如何使其运行

docker映像存储在gitlab集成存储库中。似乎应该自动设置身份验证,但情况显然并非如此


我需要做什么才能提取私人存储的图像。

由于运行者在脚本运行之前、脚本运行之后或脚本运行之后将图像提取到任何
之前,因此您将无法进行
docker登录…
。您需要提供Docker身份验证配置文件,以便运行者可以登录

的文档包含所有信息,但简而言之,您可以从
~/.docker/config.json
获取配置。如果它不使用凭证存储(如MacOS的钥匙链),您可以直接复制内容,并将其作为变量存储在
.gitlab ci.yml
文件中,或存储在名为
DOCKER\u AUTH\u CONFIG
的项目ci变量中。如果存在该变量,则运行程序将自动使用该变量登录到注册表,然后提取映像

如果docker安装使用上述文档中的凭据存储,则还有其他选项可用于提供变量以及要遵循的说明