来自守护进程的错误响应:registry.gitlab.com 存储库的拉取访问被拒绝不存在或可能需要“docker 登录”

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

Dockerfile


FROM openjdk:8-jre-alpine

WORKDIR /app1/backend

COPY ./target/app1-backend.jar app1-backend.jar

ADD cloudfront_private_key.pem /host_files/

EXPOSE 9000

ENTRYPOINT [ "java", "-cp", "app1-backend.jar", "hsnbe.app1"]

docker-compose.yml

version: '3.4'

services:
  app1:
    logging:
      driver: awslogs
      options:
        awslogs-region: eu-west-1
    image: app1-server:development
    container_name: health_backend
    build:
      context: .
      dockerfile: ./build/DockerfileHS.dev
      target: app1
    restart: unless-stopped
    volumes:
      - ~/.ssh/health_backend_dev_cloudfront_private_key.pem:${HAPP_AWS_CLOUDFRONT_KEY_FILE_PATH:-/host_files/health_backend_dev_cloudfront_private_key.pem}
    ports:
      - ${APP1_PORT:-9000}:9000
    depends_on:
      - postgres
    links:
      - postgres

错误:

Reason CannotPullContainerError: Error response from daemon: pull access denied for registry.gitlab.com/app1/backend, repository does not exist or may require 'docker login'

我已经尝试过:

  1. Docker 登录成功,但如果我尝试从注册表中 docker pull 返回: 来自守护进程的错误响应:获取 https://registry.gitlab.com/v2/app1/backend/manifests/latest:拒绝:访问被禁止
docker docker-compose gitlab gitlab-ci docker-registry
2个回答
3
投票

TL;博士:

检查:

  1. 已登录吗?在
    ~/.docker/config.json
    中查找
    auths
    部分
  2. 身份验证令牌需要
    read-registry
    write_registry
    范围
  3. 检查容器注册表可见性。如果容器仅对Reporter或更高级别可见,则制作令牌的用户需要具有该角色
  4. 该项目是否已存在于 GitLab 上?您无法推送到任意或新的命名空间
  5. 您是否使用相同的名称构建/标记?

GitLab 容器注册表访问被拒绝

access denied
可能是因为您使用的个人访问令牌 (PAT) 没有访问此容器注册表的项目

  • PAT 必须具有
    read_registry
    scope 才能拉取,并且如果您想推送到容器注册表,还必须具有 also
    write_registry
    范围
  • 拥有 PAT 的 GitLab 用户必须拥有权限才能访问拥有此容器注册表的 GitLab 项目:
    • 对于
      docker push
      私有项目,您至少需要 开发者 访问该项目
    • 对于
      docker pull
      来说,当客人
    • 就够了
    • 如果容器的可见性是仅限项目成员,则您至少需要报告者访问权限

您不能将部署令牌与公共 API 一起使用。它们仅对 CI/CD 作业有用。

标签名称无效

access denied
的另一个原因可能是该项目实际上并不存在。您无法推送到 GitLab 中的任意命名空间。在您的示例中,错误显示:

access denied for registry.gitlab.com/app1/backend

backend
的命名空间中没有“
@app1
”项目。这甚至可能不是您的命名空间:http://gitlab.com/app1

问题中没有足够的细节,但作为猜测,您可能应该这样做,用您的用户名或组名替换

$GITLAB_USERNAME
,用项目的命名空间替换
$GITLAB_PROJECT_NAMESPACE

docker build -t registry.gitlab.com/$GITLAB_USERNAME/$GITLAB_PROJECT_NAMESPACE/app1/backend:1.0

docker push registry.gitlab.com/$GITLAB_USERNAME/$GITLAB_PROJECT_NAMESPACE/app1/backend:1.0

1
投票

我通过

gitlab-runner
在本地安装了
apt-get
并遇到了同样的问题。

我只能删除已安装的

gitlab-runner
并通过
curl

重新安装它才能解决问题
curl -L "https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh" | sudo bash

sudo apt-get install gitlab-runner
© www.soinside.com 2019 - 2024. All rights reserved.