Gitlab CI + Docker Hub:请求访问资源被拒绝

aug*_*ato 7 gitlab docker gitlab-ci-runner

我正在尝试使用 gitlab-ci 将我的图像推送到我的 docker repositoy 存储库,但我收到错误消息:

拒绝:请求访问资源被拒绝错误:作业失败:退出代码 1

我的.gitlab-ci.yml

# This file is a template, and might need editing before it works on your project.
# Official docker image.
image: docker:latest

services:
  - docker:dind

before_script:
   - docker version
   - docker-compose version
   - docker login -u $USER -p $PASS index.docker.io


build-master:
  stage: build
  script:
    - apk add --no-cache py-pip
    - pip install docker-compose    
    - docker build --pull -t index.docker.io/$REPOSITORY .
    - docker push index.docker.io/$REPOSITORY
  only:
    - master
  tags:
  - docker

build:
  stage: build
  script:
    - docker build --pull -t index.docker.io/$REPOSITORY:latest .
    - docker push index.docker.io/$REPOSITORY:latest
  except:
    - master
  tags:
  - docker
Run Code Online (Sandbox Code Playgroud)

他正确地构建了图像,但是当去推

The push refers to repository [docker.io/$REPOSITORY]
fc57a6fc4d42: Preparing
09b261acf68f: Preparing
04ea2928643d: Preparing
1132926ce5ae: Preparing
de09db5a8cb2: Preparing
0b75a2e7b59f: Preparing
d01d9d1902f1: Preparing
3dab7cdf2eed: Preparing
1da4e8fff32b: Preparing
23c522961836: Preparing
a51421a28d33: Preparing
8b1c06910686: Preparing
30e8a3d88591: Preparing
fd8fae5cd65a: Preparing
6b68dfad3e66: Preparing
cd7100a72410: Preparing
0b75a2e7b59f: Waiting
d01d9d1902f1: Waiting
3dab7cdf2eed: Waiting
1da4e8fff32b: Waiting
23c522961836: Waiting
a51421a28d33: Waiting
8b1c06910686: Waiting
30e8a3d88591: Waiting
fd8fae5cd65a: Waiting
6b68dfad3e66: Waiting
cd7100a72410: Waiting
denied: requested access to the resource is denied
ERROR: Job failed: exit code 1
Run Code Online (Sandbox Code Playgroud)

我更改 $REPOSITORY 的存储库名称仅用于粘贴此处。

我已经在 hub.docker.com 上授予了正确的权限,因为用户已经进行了 docker 登录,并且在存储库上有一个合作者。

谢谢

Hos*_*ein 6

使用$CI_REGISTRY和$CI_PROJECT_PATH.

示例代码:

- docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY/$CI_PROJECT_PATH
- docker build -t $CI_REGISTRY/$CI_PROJECT_PATH/name:latest
- docker push $CI_REGISTRY/$CI_PROJECT_PATH/name:latest
Run Code Online (Sandbox Code Playgroud)


Mar*_*eck 1

我认为问题在于登录在任务的实际部分中before_script而不是在script任务的实际部分中。

遗憾的是,因为我觉得将登录部分纳入该before_script部分,然后执行该script部分中所需的任何与 Docker Hub 相关的操作更“正确”。

但恐怕它不起作用——每个script部分都需要包含自己的登录步骤。