如何在Gitlab-ci中正确登录使用GCR的私有镜像?

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

我正在尝试登录 CGR 并在 Gitlab-ci 运行程序中使用一些私有 docker 镜像。

我在 Google Cloud 中创建了一个新项目并激活了 Google Cloud Registry API。我还创建了一个新的服务帐户 (IAM),在其中我向之前的 Cloud Registry 实例授予了所有权权限。然后我生成了一个 json 密钥。我使用以下 gitlab-ci 配置在本地计算机中测试了密钥:

image: docker:latest
services:
  - docker:dind
auth:
  stage: auth
  script:
    - docker login -u _json_key --password-stdin https://gcr.io < ./keyfile.json

似乎已经过身份验证并被授权可以推送/拉取图像。

我需要做的是拥有以下内容,我需要转到我的私人存储库并在 gitlab-ci 运行程序中使用这些图像。像这样的东西:

before_script:
    - docker login -u _json_key --password-stdin https://gcr.io < ./keyfile.json

build:
  stage: build
  image: gcr.io/image-repo/image
  script:
    - gradle clean build

deploy:
  stage: deploy
  image: gcr.io/image-repo/image
  script:
    - gradle publish
  only:
    - master

但是,我不断收到此错误:

在 docker-auto-scale 上使用 gitlab-runner 11.10.1 (1f513601) 运行 0277ea0f 将 Docker 执行器与映像一起使用 gcr.io/image-repo/image ... 拉取 docker 镜像 gcr.io/image-repo/image ... 错误:准备 失败:来自守护程序的错误响应:未经授权:您没有 执行此操作需要权限,并且您的权限可能无效 证书。要验证您的请求,请按照以下步骤操作: https://cloud.google.com/container-registry/docs/advanced-authentication (executor_docker.go:168:0s) 3s后重试...

docker google-cloud-platform gitlab-ci gitlab-ci-runner
2个回答
6
投票

我实现了一个实用的解决方案:

需要使用wind服务来重置docker配置,然后登录,例如在本地计算机中使用:

docker login -u _json_key --password-stdin https://gcr.io < ./keyfile.json

然后,只需复制

~/.docker/config.json
中的配置即可 到 Gitlab CI 中的变量
DOCKER_AUTH_CONFIG
就可以开始了。


0
投票

我能够执行安德烈·格雷罗提到的事情。此链接提供了更全面的解释如何在 gitlab CI 中配置 gcr 私有镜像

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