请求访问拒绝存储库不存在,或者可能需要 Docker 登录

我用的是 Laravel 4.2和 Docker。我在本地安装的。它的工作没有任何问题,但当我试图设置在线使用相同的程序,然后我得到了错误:

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

在这里创建存储库 https://cloud.docker.com/是否与此相关,还是需要在命令中登录 docker?

经过几天的研究,我仍然不能找出什么可以在这种情况下的修复和什么是正确的步骤?

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

567913 次浏览

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

我也有同样的问题。对我来说,这是一个私人登记处。所以我必须创建一个如图 给你所示的秘密

然后我们必须像下面所示的那样将映像 pull secret 添加到 loyment.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

请注意,来自 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'

上面写着 它 < strong > may 需要‘ docker login’。 我挣扎过。我意识到这个图像在 https://hub.docker.com已经不存在了。我希望这能帮到别人。

我和码头作曲家合作的时候也遇到过同样的问题。在我的案例中,它是一个 Amazon AWS ECR 私有注册中心。看起来像是码头作曲里的一个漏洞

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

在将完整路径“ myrepo/myimage”添加到 docker 之后,编写 yaml

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

一切都很好。

Docker 可能丢失了身份验证数据。因此,您必须向注册表提供商重新进行身份验证。例如,使用 AWS:

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

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

资料来源: 亚马逊 ECR 注册表

如果您从自己的注册中心或 docker-hub 之外的其他地方下载,那么您可能需要在他们的站点上进行单独的条款协议,比如 Oracle 的 docker 注册中心。它允许你做码头登录很好,但拉容器将不会仍然工作,直到你去他们的网站,并同意他们的条款。

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

来自 巨蟒:3.7-阿尔卑斯山

在 docker-compose. yml 文件中尝试这样做

image: php:rc-zts-alpine

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

在我的例子中,我在其他地方定义了另一个 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。

我有相同的错误消息,但原因完全不同。

作为新来的码头工人,我签发了

码头运行 < crypticalId >

其中 < crypticalId > 是我新创建的容器的 id。

但是,run 命令需要的是 形象的 id,而不是容器。

要启动一个容器,docker 希望

码头 开始-i < crypticalId >

确保码头工人的名字写对了!

在我的例子中,我写道(注意额外的“ u”) :

FROM ubunutu:16.04

正确的码头名称是:

FROM ubuntu:16.04

这是因为我无意中删除了第一张图片中的 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 ...

确保 image存在于码头集线器中心。对我来说,我试图使用不正确的命令 docker run mongodb来拉 MongoDB。在 docker hub 中,映像名称为 mongo

如果在本地没有具有该名称的映像,docker 将尝试从 docker hub 提取它,但是在 docker hub 上没有这样的映像。 或者简单地尝试“ docker login”。

当您输入错误的图像名称时,消息通常会出现。请检查您的映像是否存在于 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

2020年11月及以后

如果这个错误是新的,并且从 Docker Hub 提取过去是有效的,请注意 Docker Hub 现在在2020年11月引入了费率限制

你会经常看到这样的信息:

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

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

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

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

对于 CircleCI 用户:

      - 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

我也有同样的问题

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

原来 码头中心被转移到了另一个名字 所以我建议你重新登记码头中心

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

如果你在 Docker 构建过程中有两个以上的阶段,请阅读下面的解决方案: 这个错误消息完全是误导性的。

如果您有一个两阶段(上下文) dockerfile,并且希望将一些数据从第一阶段复制到第二阶段,则必须标记第一个上下文(例如: build)并通过该标记访问它

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

如果它是由 AWS EC2和 ECR 引起的,由于名称问题(初学者会出现这种情况!)

来自守护进程的错误响应: 对 my-app 的拉访问被拒绝,存储库不存在或者可能需要‘ docker login’: 拒绝: 请求的对资源的访问被拒绝

当使用 docker pull 时,使用图像的 Image URI,在 ECR-row 中可以作为 CopyURI 使用

docker pull Image_URI

在我的例子中,我在本地机器上使用了一个自定义映像和插入 Minikube 的 docker。

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

imagePullPolicy: Always

但它应该是:-

imagePullPolicy: IfNotPresent

因为只有在我在 minikube docker 环境中显式构建了自定义映像之后,它才会在本地出现。

我看到这条信息,觉得我的 Docker 认证有问题。然而,我已经意识到 Docker 每个免费计划只允许一个私有存储库。因此,很有可能您正在尝试提取您的私有存储库,并看到这个错误,因为还没有升级您的计划。

遇到了同样的问题,但都不管用。然后我明白了我需要先运行 .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 .

我在 Dockerfile 把 nginx 拼错了

如果您正在使用多个 Dockerfiles,您不应该忘记为所有 Dockerfiles 运行 build。那是我的案子。

在我的案例中,解决方案是通过视觉工作室重新创建 Docker-file,所有工作都很完美。

我不得不先运行码头拉,然后运行码头-组合再次,然后它工作。

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

我听说了同样的问题。 我用登录解决的

docker login -u your_user_name

然后我被提示输入 docker hub 密码 其余的命令在登录成功后工作正常

有些人可能会因为不同的原因而遇到同样的错误,所以让我分享一下:

我在使用 docker multistage 构建时得到了相同的错误(多个: FROM < > as < >)。 而且我忘了删除一个(COPY —— from = < > < >)

删除该拷贝之后,它工作得很好。

超出码头中心的免费回购限额:

尽管第一次执行:

docker login -u <dockerhub uname>

和返回“ 登入成功”时,我收到了这个问题中的错误。

< strong > 设置 > 能见度设定 的 webgui 中,我评论道:

使用1个私有存储库中的2个。

这告诉我,我已经超过了 Docker Hub 的免费账户限额。然而,删除之前的图像并不能清除错误..。

解决方案:

实际上,在我的例子中,错误消息是一个转移注意力的信息——它与身份验证问题没有任何关系。

只是删除图像 超过 的允许限制做了 没有清除错误但!

要通过错误,您需要删除 全部的图像在您的 免费 Docker Hub 帐户,然后运行一个新的构建推动图像到您的帐户。

您的 pull命令现在将成功。

私人回购。

使用此模式 username/image:tag

例如,rohitnishad613是我的 Docker 用户名

rohitnishad/some-app:latest