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

8
我正在尝试使用gitlab-ci将我的镜像推送到docker仓库,但我收到了以下错误信息:
被拒绝:请求的资源访问被拒绝 错误:作业失败:退出代码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

他正确地构建了镜像,但在推送时出现问题。
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

我只是为了在这里粘贴,改变了$REPOSITORY的存储库名称。

我已经在hub.docker.com上为该用户授予了正确的权限,该用户已进行了docker登录,并成为该存储库的协作者。

谢谢。


1
我也遇到了这个问题。奇怪的是,登录工作正常;$ docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY 警告!通过CLI使用--password不安全。请使用--password-stdin。警告!您的密码将以未加密的形式存储在/root/.docker/config.json中。配置凭据助手以消除此警告。请参见https://docs.docker.com/engine/reference/commandline/login/#credentials-store 登录成功 它看起来几乎与此https://gitlab.com/gitlab-org/gitlab-ce/issues/23339有关,但我认为这可能是另一个问题。你能推吗? - 4x0v7
$REPOSITORY 可能是问题所在。 - Jonathon Reinhart
1
顺便说一句,如果你在.gitlab-ci.yml文件的顶部将image设置为tmaier/docker-compose:latest,那么你就不必安装pip然后安装Docker Compose了。 - Mark Birbeck
3个回答

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

1
这些预定义变量非常好用。谢谢! - Levente Orbán

1
我曾经遇到过同样的错误,我更改了"REGISTRY"变量地址,将你的注册表地址比如 "registry.gitlab.com/ayil****/emre*****" 更改为我的地址,这样问题就解决了......

1
我认为问题在于将登录部分放在任务的before_script中,而不是实际的script部分。
这很遗憾,因为我认为将登录部分分解到before_script部分更加“正确”,然后在script部分执行必要的Docker Hub相关操作。
但我担心这样做行不通 - 每个script部分都需要包含自己的登录步骤。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接