繁体   English   中英

来自守护程序的错误响应:registry.gitlab.com 存储库不存在或可能需要“docker login”的请求访问被拒绝

[英]Error response from daemon: pull access denied for registry.gitlab.com repository does not exist or may require 'docker login'

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 Login Succeeded, but if I try to docker pull from registry returns: Error response from daemon: Get https://registry.gitlab.com/v2/app1/backend/manifests/latest : denied: access forbidden
  1. 图像是否存在于存储库中? 检查名称拼写错误。
  2. 使用凭据创建一个秘密以访问存储库并将其添加到 yaml 文件( https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/

TL;博士:

查看:

  1. 你登录了吗? ~/.docker/config.json auths查看身份验证部分
  2. Auth 令牌需要read-registrywrite_registry范围
  3. GitLab 上是否存在该项目? 您不能推送到任意命名空间
  4. 您是否使用相同的名称构建/标记?

GitLab 容器注册表的访问被拒绝

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

  • PAT 必须具有read_registry scope才能拉取,如果要推送到容器注册表,必须具有write_registry scope
  • 拥有 PAT 的 GitLab 用户必须有权访问拥有此容器注册表的 GitLab 项目:
    • 对于docker push送到私有项目,您至少需要对该项目的开发人员访问权限
    • 对于docker pull ,做客就够

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

标签名称无效

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

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

@app1的命名空间中没有“ backend ”项目。 这甚至可能不是您的命名空间: 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

我已经通过apt-get在本地安装了gitlab-runner并且遇到了同样的问题。

只有我删除了已安装的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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM