拉取访问被拒绝的存储库不存在或可能需要 docker login

Posted

技术标签:

【中文标题】拉取访问被拒绝的存储库不存在或可能需要 docker login【英文标题】:pull access denied repository does not exist or may require docker login 【发布时间】:2018-07-21 01:20:05 【问题描述】:

我正在使用 Laravel 4.2 和 docker。我在本地设置。它没有任何问题,但是当我尝试使用相同的程序进行在线设置时,我收到了错误:

pull access denied for <projectname>/php, repository does not exist or may require 'docker login'

在这里创建存储库https://cloud.docker.com/ 或需要在命令中使用 docker login 是否相关?

经过几天的研究,我仍然无法弄清楚在这种情况下可以解决什么问题以及正确的步骤是什么?

我有完整的代码。如果需要检查某些部分,我可以在这里粘贴。

【问题讨论】:

【参考方案1】:

如果存储库是私有的,您必须分配权限才能下载它。您有两个选择,使用 docker login 命令,或者将登录后生成的文件放入 ~/.docker/docker.config。

【讨论】:

在本地运行良好。为什么它会在线创建错误? 我已经使用 docker login 登录但我找不到 ~/.docker/docker.config ~/.docker/docker.config 只能在 linux 下工作,你是在运行 docker for mac o for windows 吗??? 我正在为 Ubuntu 16.0.4 运行 你试过docker login --username user --password pass ???你试过拉路径docker pull registry.hub.docker.com/organization/image:version ???【参考方案2】:

我有同样的问题。就我而言,它是一个私人注册表。所以我必须创建一个秘密,如图所示here

然后我们必须将图像拉取密码添加到deployment.yaml文件中,如下所示。

pods/private-reg-pod.yaml  
apiVersion: v1
kind: Pod
metadata:
  name: private-reg
spec:
  containers:
  - name: private-reg-container
    image: <your-private-image>
  imagePullSecrets:
  - name: regcred

【讨论】:

【参考方案3】:

请注意,来自 Docker 的错误消息具有误导性。

$ docker build deploy/.
Sending build context to Docker daemon  5.632kB
Step 1/16 : FROM rhel7:latest
pull access denied for rhel7, repository does not exist or may require 'docker login'

它说可能需要'docker login'。 我为此苦苦挣扎。我意识到https://hub.docker.com 不再存在该图像。我希望这对某人有所帮助。

【讨论】:

或者您使用电子邮件地址而不是 docker id 登录。 ***.com/questions/35644329/… 感谢您指出这一点。该错误消息确实非常具有误导性,因为在我的情况下,该图像根本不存在。但是我配置了一个当时不可用的远程存储库。因此,当 docker 在我的本地存储库中找不到该图像时,它尝试了那个远程存储库但失败了。如果 docker 在错误中显示存储库的名称,那就太好了,这样您就知道幕后发生了什么。 在我的例子中,我输入了一个错误的 docker 命令——这与 repo 中不存在的图像相同。 谢谢 .. 这是一个非常具有误导性的错误 .. 在我的情况下,它的语法不正确 .. 我没有意识到我输入了 docker create service,而正确的用法是 docker service create 该错误具有误导性。图像很简单丢失。您可能需要加载图像,或者在我的情况下,我需要运行另一个 Dockerfile 来创建下一个 Dockerfile 所需的图像。【参考方案4】:

我在使用 docker-composer 时遇到了同样的问题。在我的例子中,它是一个 Amazon AWS ECR 私有注册表。这似乎是 docker-compose 中的一个错误

https://github.com/docker/compose/issues/1622#issuecomment-162988389

将完整路径“myrepo/myimage”添加到 docker compose yaml 后

图片:xxxxxxxxx.dkr.ecr.us-east-1.amazonaws.com/myrepo:myimage

一切都很好。

【讨论】:

【参考方案5】:

Docker 可能丢失了身份验证数据。因此,您必须向您的注册表提供程序重新进行身份验证。以 AWS 为例:

aws ecr get-login --region us-west-2 --no-include-email

然后将生成的“docker login...”复制并粘贴到经过身份验证的 docker。

来源:Amazon ECR Registeries

【讨论】:

【参考方案6】:

如果您从自己的注册中心或 docker-hub 以外的其他地方下载,您可能需要在他们的网站上签订单独的条款协议,例如 Oracle 的 docker 注册中心。它允许您很好地进行 docker login,但在您访问他们的站点并同意他们的条款之前,拉动容器仍然无法正常工作。

【讨论】:

【参考方案7】:

我通过在 docker 图像的前面插入一种语言解决了这个问题

FROM python:3.7-alpine

【讨论】:

【参考方案8】:

在你的 docker-compose.yml 文件中试试这个

image: php:rc-zts-alpine

【讨论】:

【参考方案9】:

此错误消息可能表示其他内容。

在我的例子中,我在其他地方定义了另一个 Docker-Image,当前 Docker 从中继承了它的设置 (docker-compos.yml):

FROM my_own_image:latest

我得到的错误信息:

qohelet$ docker-compose up
Building web
Step 1/22 : FROM my_own_image:latest
ERROR: Service 'web' failed to build: pull access denied for my_own_image, repository does not exist or may require 'docker login'

由于重新安装,以前的 Docker 消失了,我无法使用 docker-compose up 和以下命令构建我的 docker:

sudo docker build -t my_own_image:latest -f MyOwnImage.Dockerfile .

在您的具体情况下,您可能已经定义了自己的 php-docker。

【讨论】:

好听的用户名; אתה קורא עברית? היום קצת מאוד :(【参考方案10】:

我收到了同样的错误信息,但原因完全不同。

刚接触docker,我发了

docker run -it

其中 是我新创建的容器的 ID。

但是,运行命令需要 图像 的 id,而不是容器。

docker想要启动一个容器

docker 开始 -i

【讨论】:

【参考方案11】:

请确保正确写入 docker 名称!

就我而言,我写道(注意额外的“u”):

FROM ubunutu:16.04

正确的码头名称是:

FROM ubuntu:16.04

【讨论】:

我认为他们应该将“ubuntu”的拼写修正为更好的“ubunutu”;-) 是的,错印是最常见的情况 哈!就我而言,它是 pyhon 而不是 python。 以类似的方式,我没有使用我认为的 docker-compose 文件运行,所以也要检查一下。 是的,就是这个问题,非常感谢【参考方案12】:

我有这个是因为我无意中从我的第一张图片中删除了 AS 标签:

例如:

FROM mcr.microsoft.com/windows/servercore:1607-KB4546850-amd64
...
.. etc ...
...
FROM mcr.microsoft.com/windows/servercore:1607-KB4546850-amd64
COPY --from=installer ["/dotnet", "/Program Files/dotnet"]
... etc ...

应该是:

FROM mcr.microsoft.com/windows/servercore:1607-KB4546850-amd64 AS installer
...
.. etc ...
...
FROM mcr.microsoft.com/windows/servercore:1607-KB4546850-amd64
COPY --from=installer ["/dotnet", "/Program Files/dotnet"]
... etc ...

【讨论】:

【参考方案13】:

确保image 存在于 docker hub 中。对我来说,我试图使用不正确的命令docker run mongodb 来拉取 MongoDB。在 docker hub 中,镜像名称为mongo

【讨论】:

【参考方案14】:

如果您在本地没有同名的镜像,docker 会尝试从 docker hub 拉取它,但 docker hub 上没有这样的镜像。 或者干脆尝试“docker login”。

【讨论】:

【参考方案15】:

当您输入错误的图像名称时,通常会出现该消息。请检查您的图像是否存在于带有正确标签的 Docker 存储库中。 它帮助了我。

docker run -d -p 80:80 --name ngnix ngnix:latest
Unable to find image 'ngnix:latest' locally
docker: Error response from daemon: pull access denied for ngnix, repository does not exist or may require 'docker login': denied: requested access to the resource is denied.
See 'docker run --help'.
$ docker run -d -p 80:80 --name nginx nginx:latest
Unable to find image 'nginx:latest' locally
latest: Pulling from library/nginx

【讨论】:

【参考方案16】:

2020 年 11 月及以后

如果此错误是新的,并且过去从 Docker Hub 拉取工作正常,请注意 Docker Hub now introduced rate limiting in Nov 2020

您会经常看到如下消息:

警告:未提供身份验证,使用 CircleCI 凭据从 Docker Hub 拉取。

来自 Circle CI 和其他使用 Docker Hub 的类似工具。或者:

来自守护进程的错误响应:cimg/mongo 的请求访问被拒绝,存储库不存在或可能需要“docker login”:拒绝:请求的资源访问被拒绝

您需要指定用于获取图像的凭据:

对于CircleCI users:

      - image: circleci/mongo:4.4.2

        # Needed to pull down Mongo images from Docker hub
        # Get from https://hub.docker.com/
        # Set up at https://app.circleci.com/pipelines/github/org/sapp
        auth:
          username: $DOCKERHUB_USERNAME
          password: $DOCKERHUB_PASSWORD

【讨论】:

我这样做了,在我的项目的circleci控制台上将用户名和密码设置为环境变量,它仍然告诉我Error response from daemon: pull access denied for nyck33/myimage, repository does not exist or may require 'docker login': denied: requested access to the resource is denied【参考方案17】:

我遇到了同样的问题

pull access denied for microsoft/mmsql-server-linux, repository does not exist or may require 'docker login': denied: requested access to the resource is denied

原来DockerHub 被移到了另一个名字 所以我建议你重新签入 docker hub

【讨论】:

对我来说就像一个魅力,你拯救了我的一天。谢谢!【参考方案18】:

当我在 Power shell 中多次运行命令“docker pull scrapinghub/splash”时,问题就解决了。

【讨论】:

【参考方案19】:

如果您在 docker 构建过程中有两个以上阶段,请阅读此解决方案: 此错误消息完全具有误导性。

如果你有一个双阶段(上下文)的 dockerfile,并且想要将一些数据从第一阶段复制到第二阶段,则必须标记第一个上下文(例如:构建)并通过该标签访问它

#stage(1)
from <image> as build 
.
.
#stage(2)
From <image>
copy --from=build /sourceDir  /distinationDir

【讨论】:

【参考方案20】:

如果是由 AWS EC2 和 ECR 引起的,由于名称问题(发生在初学者身上!)

来自守护程序的错误响应:我的应用程序的拉取访问被拒绝,存储库不存在或可能需要“docker login”:拒绝:请求的资源访问被拒绝

当使用 docker pull 时,使用镜像的 Image URI,在 ECR-row 本身中作为 Copy URI 可用

docker pull Image_URI

【讨论】:

【参考方案21】:

在我的例子中,我使用的是自定义图像和 docker 烘焙到我本地机器上的 Minikube 中。

我错误地指定了拉取策略:-

imagePullPolicy: Always

但它应该是:-

imagePullPolicy: IfNotPresent

因为自定义镜像仅在我在 minikube docker 环境中明确构建后才出现在本地。

【讨论】:

【参考方案22】:

我看到了这条消息,并认为我的 Docker 身份验证有问题。但是,我意识到 Docker 每个免费计划只允许 1 个私有存储库。因此,您很可能尝试拉取私有存储库并看到此错误,因为尚未升级您的计划。

【讨论】:

【参考方案23】:

遇到同样的问题,但没有任何效果。然后我明白我需要先运行.sh (.ps1) 脚本,然后再执行docker-compose

所以我有以下文件:

   docker-compose.yml
   
   docker-build.sh
   
   docker-build.ps1
   
   Dockerfile

我必须首先在 Unix (Mac) 机器上运行 docker-build.sh 或在 Windows 上运行 docker-build.ps1

sh docker-build.sh

在我的情况下它将构建一个图像。 只有在构建图像后,我才能运行:

docker-compose up --build

供参考。这是我的docker-compose 文件:

version: '3.8'

services:

  api-service:
    image: x86_64/prediction-service:0.8.1
    container_name: api-service
    expose:
      - 8060
    ports:
      - "8060:80"    

这里是docker-build.sh:

VERSION="0.8.1"
ARCH="x86_64"
APP="prediction-service"
DIR="$( cd "$( dirname "$BASH_SOURCE[0]" )" >/dev/null 2>&1 && pwd )"
docker build -f $DIR/Dockerfile -t $ARCH/$APP:$VERSION .

【讨论】:

【参考方案24】:

我在 Dockerfile 中将 nginx 拼错为 nignx

【讨论】:

它给了你这个错误?这似乎出乎意料? @JeremyCaney 是的,确实如此【参考方案25】:

如果您使用多个 Dockerfile,您不应该忘记为所有这些文件运行构建。这就是我的情况。

【讨论】:

【参考方案26】:

在我的情况下,解决方案是通过 Visual Studio 重新创建 docker-file 并且一切正常。

【讨论】:

【参考方案27】:

我必须先运行 docker pull,然后再次运行 docker-compose up,然后它就可以工作了。

docker pull index.docker.io/youruser/yourrepo:latest

【讨论】:

谢谢!我正在关注 Dapr + docker-compose docks,他们没有提到任何关于 docker pull 首先

以上是关于拉取访问被拒绝的存储库不存在或可能需要 docker login的主要内容,如果未能解决你的问题,请参考以下文章

拉取访问被拒绝,存储库不存在或可能需要授权:服务器消息:不足的范围:授权失败

DOCKER 错误:coffeeteareadb 的拉取访问被拒绝,存储库不存在或可能需要“docker login”

来自守护进程的错误响应:构建容器的拉取访问被拒绝,存储库不存在或可能需要“docker login”

CannotPullContainerError:来自守护程序的错误响应:ECR 存储库映像的拉取访问被拒绝,存储库不存在或可能需要“docker login”

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

“aaaaa”存储库的拉取访问被拒绝不存在或可能需要“docker login”