Gitlab:如何将自定义 docker 镜像推送到不同的存储库/命名空间

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

我有两个存储库,我们称它们为project1project2。我可以从project1 成功构建一个镜像为project1_image,并使用project1 中的管道作业将其推送到project1 容器注册表。 但是,当我尝试将图像构建为project2_image并将其从project1的管道推送到project2容器注册表时,出现以下错误:

"denied: requested access to the resource is denied" when attempting to push.

是否可以在project1的管道中创建一个镜像,将其命名为project2_image,并将其推送到project2的容器注册表?

我正在使用 gitlabs 默认运行程序。

Here is the .gitlab-ci.yml file in project1 that is attempting to push the image to project2.

build image:
    stage: build
    image: docker:stable
    services:
        - name: docker:dind
          alias: thedockerhost
    variables:
        # Tell docker CLI how to talk to Docker daemon; see
        # https://docs.gitlab.com/ee/ci/docker/using_docker_build.html#use-docker-in-docker-executor
        DOCKER_HOST: tcp://thedockerhost:2375/
        # Use the overlayfs driver for improved performance:
        DOCKER_DRIVER: overlay2
        DOCKER_TLS_CERTDIR: ""    
    script:
            - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" "$CI_REGISTRY"
            - docker build -t gitlab.com:5050/groupname/project2/pythonapp .
            - docker push gitlab.com:5050/groupname/project2/pythonapp
docker gitlab dockerfile gitlab-ci gitlab-ci-runner
1个回答
0
投票

是否可以在project1的管道中创建一个镜像,将其命名为project2_image,并将其推送到project2的容器注册表?

是的。

尝试推送时“被拒绝:请求访问资源被拒绝”。

因此请使用正确的凭据。自动提供的

-u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD"
用于访问项目 1,而不是项目 2。

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