我正在按照这个链接创建我的第一个docker映像,它成功了,现在我试图从这个链接将这个映像推到我的docker存储库中。但是每当我试图将这个映像推入存储库时,我就会得到这种类型的错误。

denied: requested access to the resource is denied

注:我已成功登录docker


当前回答

在使用Fabric8 Maven插件(在Windows 10上)和直接从命令行调用docker push时,我一直在与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清洁包docker:build docker:push从命令行,最后,图像出现在我的repo,这是我试图解决的问题。

顺便说一句,为了回答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

其他回答

如果您已经登录,如果您仍然得到错误。请按照步骤操作,

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

我也有同样的问题。我强烈推荐大家浏览一下这个博客。

我的问题更多地与ACR有关。Docker客户端将引用配置。您的SP证书文件将存储在json文件中(角色所有者)。

博客中帮助我解决问题的部分有:

Docker镜像ls Docker标签.azurecr.io/:v1 Docker推送.azurecr.io/:v1

在此操作之前,我还创建了一个具有所有者特权的SP。

如果在docker登录后仍然失败,请确保您试图推送到的存储库在一开始就已创建。

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

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

在尝试了之前30个答案中与Docker Hub相关的所有内容后…我终于明白了私人回购是如何运作的:它们与公共回购相同,但多了一个步骤。


当推送到存储库- Docker Hub帐户内的任何存储库时,您需要用您的用户名作为image:标记的前缀,例如:

给定以下值,

用户名= yourusername 图像名称=图像 标签=标签

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

docker tag theimage:thetag yourusername/theimage:thetag

注:

如果你在一个组织中,你需要双前缀的图像-像这样:

docker tag theimage:thetag yourusername/yourorganizationname/theimage:thetag

如果你的标签是最新的,:标签部分可以省略;Docker假设:latest如果你没有输入:thetag部分

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

 docker push yourusername/theimage:thetag

OR

 docker push yourusername/yourorganizationname/theimage:thetag

额外的步骤:

要么

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

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

Or

如果你没有提前创建存储库(这不是必需的!):转到Docker Hub中的帐户;点击新推出的回购,然后它的设置选项卡-并使你的回购私有。


我曾见过其他人用两个前缀标记私人回购,例如xyz/abc/theimage:thetag,我认为第二个前缀是我创建的,用于将回购标记为私有。不,这只适用于组织。删除任何第二个前缀和设置我的回购名称只是图像修复了我的拒绝错误!

另一个注意事项:每个repo持有所有带有给定repo名称的标记版本的图像。例如,ubuntu:latest和ubuntu:14.04都将在ubuntu repo中。

有趣的Docker!

重命名图像为用户名/image-name dockerhub-username/some-name:your-tag(例如:latest)