繁体   English   中英

拒绝:请求访问资源被拒绝:docker

[英]denied: requested access to the resource is denied: docker

我正在按照此链接创建我的第一个 docker 图像,它成功进行,现在我正尝试从此链接将此图像推送到我的 docker 存储库中。 但是每当我试图将这个图像推送到存储库时,我都会遇到这种类型的错误。

denied: requested access to the resource is denied

注意:我已经成功登录到 docker

在 docker push 之前,您可能需要将 docker repo 切换为私有。

感谢Dean Wu提供的答案ses这个评论,在推送之前,记得先退出,然后从命令行登录到你的docker hub账号

# you may need log out first `docker logout` ref. https://stackoverflow.com/a/53835882/248616
docker login

根据文档

You need to include the namespace for Docker Hub to associate it with your account.
The namespace is the same as your Docker Hub account name.
You need to rename the image to YOUR_DOCKERHUB_NAME/docker-whale.

因此,这意味着您必须在推送之前标记您的图像:

docker tag firstimage YOUR_DOCKERHUB_NAME/firstimage

然后你应该能够推动它。

docker push YOUR_DOCKERHUB_NAME/firstimage

我在参加 docker 初学者课程时遇到了同样的问题。 我通过在 docker push 调用之前进行docker login解决了这个问题。

我有同样的问题,但这里给出的接受的答案对我不起作用。 我尝试了几个步骤,最终能够绕过它来推动它。 希望这可以帮助某人。

以下是对我有用的步骤:

1)登录码头。

docker login -u sirimalla

2)标记您的图像构建

我的图片名称是: mylocalimage ,默认情况下它有标签:最新
我的用户名是: sirimalla在 docker cloud 中注册,我创建了一个名为: dockerhub的公共存储库

所以我的个人存储库现在变成了: sirimalla/dockerhub ,我想用标签推送我的图像: myfirstimagepush

我标记如下:

docker tag mylocalimage:latest sirimalla/dockerhub:myfirstimagepush

3) 将图像推送到我的个人 docker 存储库,如下所示

docker push sirimalla/dockerhub:myfirstimagepush

它成功地推送到了我的个人 docker repo。

使用以下命令:

$ docker login
<enter user name and password for Docker Hub Repository>

$ docker tag first-image {docker-hub-username}/{default-repo-folder-name}:first-image

$ docker push {docker-hub-username}/{default-repo-folder-name}:first-image

例如,我有像 manjeet86/docker-repo 这样的公共存储库,所以命令是:

$ docker tag first-image manjeet86/docker-repo:first-image

$ docker push manjeet86/docker-repo:first-image

看看:而不是/那是诀窍。 这个对我有用。 我不知道它是否允许您使用/来代替:进行标记,但这可能是出于其他目的。

https://docs.docker.com/engine/reference/commandline/tag/#examples

还需要注意的重要一点是,当您标记图像时,您使用命名空间标记它,然后使用您的存储库 / mydevrepo标记它。 这让我在关注 Docker 文档时感到困惑。 之后我使用了:

docker login

然后我使用'tagged name'推送我的图像。

docker push {namespace}/mydevrepo

不知道 docker hub 发生了什么,但发布的解决方案都不适合我。 以下是截至 2018 年 1 月最终为我工作的解决方法:

  1. 转到 hub.docker.com 并将您的存储库更改为私有
  2. 在您的外壳中执行以下操作:

docker images

REPOSITORY TAG IMAGE ID CREATED SIZE verse_gapminder_gsl latest 023ab91c6291 3 minutes ago 1.975 GB verse_gapminder latest bb38976d03cf 13 minutes ago 1.955 GB rocker/verse latest 0168d115f220 3 days ago 1.954 GB

docker tag bb38976d03cf dockhubusername/verse_gapminder:mytag

docker login docker.io

docker push dockhubusername/verse_gapminder:mytag

  1. 返回 docker hub 并将 repo 改回 public。 这对我有用。

我也遇到了这个问题,我在这里测试了解决方案,但无济于事,我已正确登录,至少根据docker login的输出,但我仍然无法推送图像。 最终起作用的只是做:

docker logout

然后再次docker login ,就这么简单。 我不确定发生了什么,但强制重新登录有效。

我遇到了同样的问题,我将我的图像名称命名为something/image-name但我尝试使用<docker-hub-username>/image-name并且它就像一个魅力。

步骤1

docker login --username=jp9573

第2步

docker push jp9573/todo

早些时候我给了jaypatel/todo ,我只是把它改成了username/image模式。 通过这种方式,我不必标记图像或任何东西。 我认为这对新人来说是一个好方法。

当我在标记图像时使用我的 docker hub 名称时,它对我有用。 (这里,xyz 是一个 docker hub 名称)

# Login to docker hub account 
docker login 

# tag image 
docker tag nginx xyz/nginx

# push image
docker push xyz/nginx

我今天有同样的问题。 唯一对我有用的是显式登录到“docker.io”

docker login docker.io

我尝试了各种其他名称,登录似乎可以工作,但后来会导致以下错误。

请求的资源访问被拒绝

Docker 还限制了您可以拥有的私有存储库的数量。 如果您通过从本地计算机推送来创建私有存储库,它将创建存储库,但无法向其推送或从中提取任何内容,并且您将收到“请求的资源访问被拒绝”错误。

我的问题很简单,只是在我的图像名称中使用了无效字符(额外的 /):

myusername/something/image

是无效的图像名称。 试试 myusername/something-image。 希望这可以帮助某人。

docker 处理用户 ID 和存储库的方式可能有点混乱。 假设您在 docker hub 上创建了一个用户帐户 xyz。 新帐户自动建立命名空间xyz 然后创建一个名为 myrepo 的存储库。 存储库名称实际上是xyz/myrepo

要推送图像,您应该这样做:

docker push docker.io/xyz/myrepo

如果需要,您可以添加 ":latest" 或不同的标签。

如果您获得requested access to the resource is denied错误消息:

  1. 转到https://hub.docker.com/并以 xyz 身份登录。
  2. 单击您的存储库 xyz/myrepo。
  3. 点击合作者。
  4. 添加 xyz 作为合作者。

操作系统:Ubuntu16.04

原因:我删除了客户端配置文件( ~/.docker/config.json

解决方案:

  • 重新启动泊坞窗。
    服务码头重新启动
  • 它需要输入登录信息,然后自动生成配置文件。
    docker login --username=yourdockerhubername --email=yourremail@company.com

将图像名称更改为“用户名”/“图像名称”

如果您在使用 Azure Container Registry 时遇到此问题,您可以通过先登录到您的注册表来解决它。

docker login yourregistry.azurecr.io

然后标记您的图像以匹配您的注册表的主机名。

docker image tag yourimagename:[version] yourregistry.azurecr.io/yourimagename:[version]

然后最后推它。

docker push yourregistry.azurecr.io/yourimagename:[version]

我的回答与 Azure DevOps 类似的问题有关,我在以下通用管道中遇到了类似问题(它更具体,但它可能会帮助某人节省时间):

  1. 从 github 获取资源
  2. 构建 docker 镜像
  3. 将 docker 镜像推送到 dockerhub

我在推送denied: requested access to the resource is denied发送给我。

请注意映像名称中包含的变量$(Build.Repository.Name) 默认情况下,它是来自 github 的存储库的名称,但要让您的推送工作,它应该是dockerhub_account_username/your_dockerhub_repository_name

$(Build.Repository.Name)替换为dockerhub_account_username/your_dockerhub_repository_name在您的镜像名称字段中,用于构建和推送步骤。

这是 dockerhub api 需要知道将图像推送到哪里的。

在我将“docker login https://hub.docker.com ”更改为“ docker login docker.io ”并提供用户名和密码后,它起作用了。

然后按照以下命令:

docker tag local-image:tagname new-repo:tagname

docker push new-repo:tagname

注意: “new-repo”将包含“Docker ID + Repo 名称”

在这里,我在运行以下命令之前在 Docker Hub 中创建了“ubuntu”存储库。

例子:

docker tag alok/ubuntu:latest aloktiwari2007/ubuntu:latest

docker push aloktiwari2007/ubuntu:latest

当您已经使用其他帐户登录时,有时您可能会遇到此问题。 在这些情况下,您必须:

docker logout

接着

docker login  

简单的工作解决方案:

去这里https://hub.docker.com/创建一个 PRIVATE 存储库,其名称例如johnsmith/private-repository这是您在构建映像时将用于映像的NAME/REPOSITORY

  • 一、 docker login

  • 其次,我使用“ docker build -t johnsmith/private-repository:01 . ”来创建镜像,并使用“ docker images ”来确认创建的镜像,如下面的黄色框:(对不起,我无法粘贴表格格式,但仅限文本字符串)

johnsmith/private-repository(REPOSITORY) 01(TAD) c5f4a2861d6e(IMAGE ID) 2 天前(已创建) 305MB(SIZE)

  • 三、我使用docker push johnsmith/private-repository:01

完毕!

对于那些尝试将图像推送到他们自己的 Nexus Repository Manager 的人,请执行以下操作:

1) 登录到您的 Nexus 存储库管理器(端口 8443 与特定的 Docker 主机存储库相关联)

sudo docker login xxx.mydomain.com:8443

2) 使用您的 NEXUS 服务器 IP/DNS 标记图像

sudo docker tag myimage:latest xxx.mydomain.com:8443/myimage:1.0.0

3) 推送图片

sudo docker push xxx.mydomain.com:8443/myimage:1.0.0

从应用程序登录。 我一直在尝试只从终端没有运气。

这是版本 17.06.1

在此处输入图像描述

docker登录后,您需要使用前缀命名您的图像。

例如,如果您在 docker-hub 中的用户名是Shah ,则图像应该是:

Shah/firstimage

我知道这个问题已经有很多答案,但没有一个对我有帮助。

我观察到的是构建映像非常快,并且推送到 docker.io 会导致错误:

denied: requested access to the resource is denied

我还注意到,做一个

docker image ls

透露我的图像的最新版本是几天前的。

我不得不做一个

docker container prune 

摆脱停止的容器,以及

docker image prune -a

摆脱旧图像。 然后我可以成功构建并推送我的图像。

“拒绝:请求的资源访问被拒绝”不是来自 docker.io,而是来自本地 docker。 有趣的是,它在构建过程中没有失败。

我遇到过同样的问题。 就我而言,我登录 index.docker.io 并将图像推送到 docker.io/username/image:tag。

解决方案是通过运行以下命令登录 docker.io:

export CI_REGISTRY=docker.io
docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
docker push USERNAME/IMAGE:TAG

输出是:

 The push refers to repository [docker.io/USERNAME/IMAGE:TAG] eeb7e16c6369: Preparing 6bd09f46d0ae: Preparing f5a7f7a3fb28: Preparing 07952c1df7f6: Preparing a4522c0d203b: Preparing 3e207b409db3: Preparing 3e207b409db3: Waiting a4522c0d203b: Layer already exists 3e207b409db3: Layer already exists f5a7f7a3fb28: Pushed 6bd09f46d0ae: Pushed 07952c1df7f6: Pushed eeb7e16c6369: Pushed latest: digest: sha256:7ce256fa83ef1eebcaaaa460c4d73f87f2adf304bc6e6c1b83a19d987cd61ad5 size: 1579 Running after_script 00:02 Saving cache 00:01 Uploading artifacts for successful job 00:02 Job succeeded

问候。

我也有这个问题。 原来我正在使用免费层并尝试在私有存储库中推送超过 1 个图像。 将 1 张图片设为私有,其余的设为公开对我有用。

就我而言,我正在推动一个组织,我所在的团队对存储库具有管理员权限。

所以我的推送命令是: docker push org-name/image-name

我可以成功推送到用户名/图像名,但不能推送到组织。 我三次检查了权限。 没有任何效果。

解决方案是从 docker hub 中删除 repo 并使用以下命令重新推送: docker push org-name/image-name

对于它的价值,我认为 repo 最初是在帐户转换为组织之前推送的。

我真的希望这可以帮助某人(作为我自己首先查看最终答案):

我不断尝试输入

docker push user/repo/tag

反而

docker push user/repo:tag

因为我也这样制作了我的标签:

docker tag image user/repo/tag

......所有的地狱都失败了。

我真诚地希望你不要重蹈我的覆辙。 我在这上面浪费了30分钟...

我添加另一个答案的速度很慢,但是提到docker login的已接受答案和剩余答案缺少一个边缘案例来解决其他人在评论中陈述的问题。

docker login <private-repo-host>:<port>

强调需要输入的port可能是那些仍在搜索的人的解决方案。 docker logindocker login <private-repo-host>可能会毫无问题地连接,但是在推送图像时,您将收到与 OP 相同的错误。

也就是说,您可以在不定义主机或端口的情况下进行连接,但仍然可以获得:

...

登录成功

就我而言,我使用的是自托管 GitLab 内置的 docker-registry,它设置为使用端口4567 验证必须从哪个端口访问注册表可能是冒险的。 如果不指定所述端口docker login <our.gitlab.host>将登录成功,但会给出 OP 询问的相同问题:

...

推送是指存储库 [...]

拒绝:禁止访问

如果您使用的是 docker.io/dockerhub,您可能不会遇到这个问题,但是如果您有一个自托管/私有注册表解决方案,那么您需要使用 docker 注册表的主机和端口显式登录的可能性会增加.

最简单的方法是使用 docker 桌面(适用于 Windows 10 或更高版本和 mac)

首先通过提供 dockerID 注册到 docker hub

然后单击机器中的 docker 桌面图标和 -> 首选项 -> 然后使用 docker hub docker/id 和密码登录它。

在此处输入图像描述

我也遇到了这个错误消息,使用 Gitlab 注册表。 不同之处在于我试图从以前的版本中更改图像的名称。 那里的问题是被推送的图像的注册表不存在,因为图像的新名称与我组中的任何项目都不匹配。

TLDR:在 Gitlab 中,图像名称必须与项目名称匹配。

我从Azure pipeline遇到了类似的问题。 我错过了在存储库部分添加docker-id

Azure推送时,如果仅使用名称,例如<repo-name> ,可能无法正常工作。 它需要完全限定的 repo 名称,其中还包括docker-id

利用

repository: '<docker-id>/<repo-name>'

代替

repository: '<repo-name>'

管道片段:

- task: Docker@2
  inputs:
    containerRegistry: 'service-connection-name'
    repository: '<docker-id>/<repo-name>'

如果在docker login之后它仍然失败,请确保您尝试推送到的存储库是首先创建的。

所以,如果它对任何人都有帮助......
我遇到了同样的问题,这就是我的问题和修复问题。

  • 我的测试网络上有一台名为“galaxy”的计算机。
  • 我使用以下运行命令设置 docker 注册表:

     sudo docker run -d --restart=always \ --name registry \ -v /srv/registry/certs:/certs \ -v /srv/registry/storage:/var/lib/registry \ -e REGISTRY_HTTP_ADDR=0.0.0.0:443 \ -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/galaxy.cert \ -e REGISTRY_HTTP_TLS_KEY=/certs/galaxy.key \ -p 443:443 \ registry:2

    然后我试图将图像从网络上的笔记本电脑推送到星系,所以我这样做了:

     docker login galaxy

    这会给我一个错误,会说:

     Login did not succeed, error: Error response from daemon: Get https://galaxy/v2/: x509: certificate signed by unknown authority

    奇怪的是,解决这个问题的方法是像这样登录:

     docker login galaxy:443

    这导致成功登录。

    因此,我尝试将图像从笔记本电脑推送到“银河”。
    我已经为我的图像创建了一个标签,如下所示:

     galaxy/myImage:0.0.1

    所以我试图推动它这样做:

     docker push galaxy/myImage:0.0.1

    我得到了答复:

     The push refers to repository [docker.io/galaxy/myImage] 7ab460574f86: Preparing 1aecaf56754d: Preparing 1df1b5f06ca4: Preparing denied: requested access to the resource is denied

    奇怪的是,我发现解决这个问题的方法是首先标记图像,如下所示:

     docker tag myImage:0.0.1 galaxy:443/myImage:0.0.1

    ...然后像这样推动:

     docker push galaxy:443/myImage:0.0.1

    所以出于某种原因,我不得不在标签中包含端口作为存储库名称的必需部分。



    希望这对其他人有帮助。

  • 以前的所有答案都是正确的,我只想添加我看到的未提及的信息;

    如果项目是私有项目,要正确推送图像,则必须配置个人访问令牌或部署令牌并启用 read_registry 密钥。

    来源: https ://gitlab.com/help/user/project/container_registry#using-with-private-projects

    希望这会有所帮助(如果问题是及时发布的)

    这个答案对我未来的自己和其他人一样重要。 当我正确登录时,我遇到了这个确切的问题,但是当我的私人回购数量大于或等于我的计划允许的限制时,我试图推送到私人回购。

    我不确定我是如何创建太多私人回购的,但如果我的计划包括 5 个私人回购,并且不知何故我有 6 个,那么这就是我将收到的错误:

    denied: requested access to the resource is denied

    在我的情况下,我可能最终获得了太多私有存储库,因为我将默认可见性设置为私有:

    默认可见性

    您可以在此处确定可以拥有多少私人回购:

    计费计划

    一旦我将有问题的回购公开,问题就变得很明显:

    将存储库设为私有 5 of 5

    我带着与上述相同的消息来到这里,但来自 Azure DevOps。

    就我而言,我使用的是 docker-compose,而不仅仅是 docker,并在 yaml 中编写构建管道。

    - task: DockerCompose@0
      displayName: 'Push services'
      inputs:
        azureSubscription: '$(Parameters.azureSubscriptionEndpoint)'
        azureContainerRegistry: '$(Parameters.azureContainerRegistry)'
        dockerComposeFile: '$(Parameters.dockerComposeFile)'
        additionalDockerComposeFiles: |
          docker-compose.release.yml
          docker-compose.ci.yml
        dockerComposeFileArgs: 'PublishFolder=publish'
        action: 'Push services'
        additionalImageTags: '$(Build.BuildId)'
        includeLatestTag: true
    

    我收到的消息是明确表示它正在尝试推送到 docker.io,这不是我想要的。 我原本打算将它转到我的 Azure 容器注册表。

    缺少的是输入下的这一行:

    containerregistrytype: Azure Container Registry
    

    上面构建yaml的现有管道向导根本没有这行。 希望这可以帮助其他人在 Azure DevOps 上大发雷霆。

    TL;DR docker login在 macOS 上对我不起作用,但应用程序中的 docker login 有效

    当直接从终端使用时,命令docker login成功询问了我的凭据,并且在我正确输入它们之后(记住没有电子邮件,只有 docker ID 将起作用)它宣布login succeeded ,但任何推送请求最终都会denied: requested access to the resource is denied

    但是,当我从正在运行的 macOS docker 应用程序登录时(参见工具栏中的图标),它可以正常工作。 所以docker login和正在运行的 docker app/daemon 之间可能存在一些不一致

    不允许误导标签名称。
    我解决这个问题的方法:

    Command 1(Create Tag): docker tag my-nginx:latest rsachde/nginx-repository/trys:1.0 (Didn't push)
    Command 2(Push): docker push rsachde/nginx-repository/try:1.0 
    

    输出:

    denied:请求的资源访问被拒绝


    Command 1.1(Create Tag): docker tag my-nginx:latest rsachde/nginx-repository/:trys 
    Command 2.2(Push): docker push rsachde/nginx-repository:trys 
    

    输出:

    尝试:摘要:sha256:405b6f0ae25772ef71b8f59fd6a56ff9b426f50bd24bac2b5db41f65efd3387c 大小:1365

    误导是标签,请确保您理解这一点。

    在尝试了每个高分解决方案之后,我仍然没有运气。

    直到我改变我的焦点和搜索关键字以包括我的凭证助手 - 通过。

    如果这对您来说是类似的情况(使用任何类型的 docker-credential-helpers 并且只是按照一般指南进行设置),请尝试查看这些步骤并查看是否遗漏了任何内容。

    例如,我使用pass作为 docker 的 credstore,当我刚刚关注顶部时,错过了将我的 dockerhub 帐户密码插入专用pass-name docker docker-credential-helpers/docker-pass-initialized-check的步骤搜索结果设置通行证

    发出以下命令后, docker push终于对我施了一些怜悯。

    pass insert docker-credential-helpers/docker-pass-initialized-check
    

    有关更多详细信息,请参阅此答案

    这可能非常特定于 DigitalOceans Container Registry,但它可能会有所帮助:

    在我的情况下,我的管道在 docker docker push之后触发清理作业( doctl registry garbage-collection start ),这将注册表置于只读模式(请参阅doc )。 因此,清理作业处于活动状态时的下一次推送将被denied: requested access to the resource is denied

    如果doctl registry garbage-collection get-active返回 404,则作业完成并且docker push将成功完成。

    推送所有标签

    使用-a推送。 st docker push username/image -a

    访问被拒绝可能是由于 docker 存储库权限不公开(您可以仔细检查)

    你需要拉来检查它是否正常。

    在 hub.docker.com 中查看

    推送成功后打开“标签”查看所有可用标签

    这在 Windows 10 上对我有用

    码头工人登录

    有一个 docker 文件,要求是构建一个镜像并立即将其推送到 Docker hub

    1. 登录到 Docker 中心
      sudo docker login -u 你的用户名
      输入密码

    2. 构建镜像
      sudo docker build -t your_username /demorepo:1.0
      上面没有提到图像名称,因为your_username /demorepo 是 docker hub 中的一个 repo。 标记名称为 1.0

    3. 推送图片
      sudo docker push your_username /demorepo:1.0

    将已经存在的镜像推送到 Docker hub

    1. 登录到 Docker 中心
      sudo docker login -u 你的用户名
      输入密码

    2. 标记您的图像(假设您的图像命名为 test_docker:1.0)
      sudo docker tag test_docker:1.0 your_username /demorepo:firstpush
      上面,firstpush 是为您的图像指定的标签名称,带有 1.0 标签的 test_docker。
      重要:(标记时,未提及图像名称)
      现在在 docker 图像中你将有 2 个图像,一个说 test_docker 1.0 另一个说your_username /demorepo firstpush

    3. 推送图片
      sudo docker push your_username /demorepo:firstpush

    将您的图像重命名为用户名/图像名称 docker tag your-current-image/current-image dockerhub-username/some-name:your-tag(例如:latest)

    尝试退出“Docker for Windows”应用程序并退出https://hub.docker.com/站点,然后执行“docker login”和“docker push”。 它对我有帮助。

    命令提示符下的 docker login 不起作用。 尝试推送时,我不断收到“拒绝访问资源的请求”。

    在登录到 docker for windows 应用程序本身后,docker push 工作得很好。 希望这可以帮助某人。

    万一其他人遇到这种情况 - 就我而言,原因是我使用(已弃用) docker compose方法来推送图像。 切换到预期的docker push为我解决了这个问题。

    另一个(非常聪明的)原因是:您的计划没有私人回购。

    在我的情况下 sudo -E 失败并显示此消息。 解决方案是在没有 sudo 的情况下提供 docker 访问权限(创建一个组 docker,将(Jenkins)用户添加到组中,在 /var/run/docker.sock 上设置组)。 现在docker push不需要 sudo,它可以工作了。

    我在 git 上的问题是项目权限配置。 我通过在设置->常规->可见性、项目功能、权限中启用“容器注册表”并为我的项目启用容器注册表来修复它( 链接):

    在此处输入图像描述

    Docker 集线器计划对命名空间可以使用的私有存储库的数量有限制。 例如,免费计划只允许您在任何时间点为一个帐户使用一个私有存储库。

    如果您在计划限制范围内,那么您的推送将成功。 否则,将创建一个带有适当标签的空存储库,但不会推送图像本身。

    就我而言,我在推送图像之前使用 Web 控制台将存储库创建为公共存储库。

    我在 docker push 上苦苦挣扎,既使用 Fabric8 Maven 插件(在 Windows 10 上),又直接从命令行调用docker push

    最后我以同样的方式解决了这两个问题。

    我的仓库叫做 vgrazi/playpen。 在我的 pom 中,我将 docker 镜像名称更改为 vgrazi/playpen,如下所示:

    <plugin>
      <groupId>io.fabric8</groupId>
      <artifactId>docker-maven-plugin</artifactId>
      <version>0.31.0</version>
      <configuration>
         <dockerHost>npipe:////./pipe/docker_engine</dockerHost>
         <verbose>true</verbose>
         <images>
           <image>
             <name>vgrazi/playpen</name>
             <build>
               <dockerFileDir>${project.basedir}/src/main/docker/</dockerFileDir>
                             ...
    

    这让我从命令行执行了一个mvn clean package docker:build docker:push ,最后,图像出现在我的仓库中,这是我试图解决的问题。

    顺便说一句,为了回答 OP 并让它直接从命令行工作,没有 Maven,我做了以下(PS 是 PowerShell 提示符,不要输入):

    PS docker images
    vgrazi/docker-test/docker-play                playpen             0722e876ebd7        40 minutes ago      536MB
    rabbitmq                                      3-management        68055d63a993        10 days ago         180MB
    PS docker tag 0722e876ebd7 vgrazi:playpen
    PS docker push vgrazi/playpen
    

    再一次,图像出现在我的 docker.io 中:repo vgrazi/playpen

    ~/.docker/config.json中的 Docker 登录参数应正确设置(登录后自动完成)

    1)不传递SERVER参数登录:

    $ echo "<password>" | docker login -u foo --password-stdin
    

    成功登录后,在~/.docker/config.json中的结果如下,并且推送图像成功

    ***
    "https://index.docker.io/v1/": {
        "auth": "YWNhcm***"
    }
    ***
    

    2) 使用传递SERVER参数作为index.docker.io登录

    $ echo "<password>" | docker login index.docker.io -u foo --password-stdin
    

    成功登录后,在~/.docker/config.json中会出现如下结果,并且推送图像失败

    ***
    "index.docker.io": {
        "auth": "YWNhcm***"
    }
    ***
    

    我遇到了同样的错误。 不幸的是,该错误是由于在 docker push 之前使用sudo造成的。 此外,您可能需要从 dockerhub 中删除存储库,因为您可以拥有的存储库数量是有限的。 并且,请尝试docker logout然后docker login

    我有一个类似的问题,我通过创建一个具有相同图像名称的存储库来解决它,然后将它推送到 docker,它工作

    是的,也许很尴尬,但似乎根本没有关于这个问题的明确文档:我刚刚注册了 Docker Pro with private repositories 我创建了一个私有存储库,然后尝试推送到它。 收到可怕的“拒绝”消息。

    推送到我的公共回购工作正常,所以我知道我登录正确。

    在前面的 30 个答案中尝试了与 Docker Hub 相关的所有内容之后......我终于明白了私有仓库的工作原理:它们与公共仓库相同,但有一个额外的步骤。


    推送到存储库时 - Docker Hub 帐户中的任何存储库 - 您需要在image:tag加上您的用户名,例如:

    给定以下值,

    用户名 = 你的用户名
    图像名称 = 图像
    标记 = 标记

    1)标记(或提交)本地图像,使用您的用户名添加前缀

    docker tag theimage:thetag yourusername/theimage:thetag
    

    备注

    • 如果您在一个组织中,则需要为图像添加双前缀- 如下所示:
    docker tag theimage:thetag yourusername/yourorganizationname/theimage:thetag
    
    • 如果您的标签是latest的, :thetag部分可以省略; 如果您不输入:thetag部分,Docker 假定:latest

    2)将前缀镜像推送到 Docker Hub:

     docker push yourusername/theimage:thetag
    

    或者

     docker push yourusername/yourorganizationname/theimage:thetag
    

    额外的步骤:

    任何一个

    在上述第 1 步之前,在您的 Docker Hub 帐户中创建一个私有存储库。

    请注意,存储库名称必须与您计划推送的theimage相同。 不要在存储库名称中包含thetag部分。 例如,如果您的图像是ubuntu:14.04 ,您可以将存储库命名为ubuntu

    或者

    如果您没有提前创建存储库(这不是必需的!):转到您在Docker Hub中的帐户; 单击新推送的存储库,然后单击其设置选项卡 - 并将您的存储库设为私有。


    我看到其他人使用私人仓库用两个前缀标记它们,例如xyz/abc/theimage:thetag ,我认为第二个前缀是我创建的用于将仓库标记为私有的东西。 不——这仅适用于组织。 删除任何第二个前缀并将我的存储库名称设置为只是theimage修复了我被拒绝的错误!

    另一个注意事项:每个 repo 都包含具有给定 repo 名称的图像的所有标记版本。 因此,例如, ubuntu:latestubuntu:14.04将在ubuntu存储库中。

    与 Docker 一起玩!

    最终对我有用的唯一一件事是在 docker hub 中创建一个公共存储库并使用相同的名称标记本地图像,并在协作者 {in dockerhub} 中添加我的用户 ID,最后推送它。

    如果您已经登录并且仍然收到错误消息。 请按照步骤,

    PS C:\Users\rohit\Docker> docker logout
    Removing login credentials for https://index.docker.io/v1/
    
    PS C:\Users\rohit\Docker> docker login
    Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
    Username: rohithpoya
    Password:*****************
    Login Succeeded
    
    Logging in with your password grants your terminal complete access to your account.
    For better security, log in with a limited-privilege personal access token. Learn more at https://docs.docker.com/go/access-tokens/
    
    PS C:\Users\rohit\Docker> docker push rohithpoya/mongo-enterprise:5                                                                                                                                                                       
    The push refers to repository [docker.io/rohithpoya/mongo-enterprise]                                                                                                                                                                        83ee27b8fe98: Pushed
    

    步骤 1:更改 docker 帐户中的隐私模式

    https://hub.docker.com/settings/default-privacy 在此处输入图像描述

    第 2 步:运行 screenshort 中提到的以下命令:

    在此处输入图像描述

    • docker 图片
    • docker 标签 <<TAG_ID>> <<USER_NAME>>/<<IMAGE_NAME>>:最新
    • docker 登录 docker.io
    • docker 推送 <<USER_NAME>>/<<IMAGE_NAME>>:latest

    output: 在此处输入图像描述

    在 Azure Devops 中创建 CI 管道以构建 docker 映像并将其推送到 Docker 集线器时,我遇到了同样的问题。 我犯的错误是在容器存储库部分提供了错误的条目。

    在 buildAndPush 任务中,我在容器存储库字段中给出了存储库名称。 实际上存储库名称应附加 Docker Hub 用户名/。 例如,您的用户名是 myuser,存储库名称是 test,然后提供条目为 myuser/test。 一旦我纠正了这个问题,管道就会成功运行,并且图像被推送到我的 docker 集线器存储库

    我在 ibmcloud 中遇到了同样的错误。 我添加了命名空间,然后尝试推送我的图像,它解决了这个问题。

    ibmcloud cr namespace-add txts
    

    我有完全相同的问题。
    我会通过这个博客强烈推荐给 go。它帮助了我。
    我的问题与 ACR 更相关。

    docker 客户端将引用 config.json 文件,如果您的 SP 凭据文件将被存储(角色所有者),那么在解决方案中帮助我的博客部分是:

    • docker 图片 ls
    • docker tag.azurecr.io/:v1
    • docker push.azurecr.io/:v1 在此操作之前,我还创建了一个具有所有者权限的 SP。

    点击这里

    暂无
    暂无

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

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