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

denied: requested access to the resource is denied

注:我已成功登录docker


当前回答

DR docker登录在macOS上不工作,但从应用程序的docker登录工作

当直接从终端使用时,命令docker登录成功地要求我的凭据,在我正确输入它们之后(记住没有电子邮件,只有docker ID将工作),它宣布登录成功,但任何推送请求将以拒绝告终:请求访问资源被拒绝

然而,当我从正在运行的macOs docker应用程序登录时(工具栏中的图标),它工作了。因此,docker登录和运行的docker应用程序/守护进程之间可能会有一些不一致

其他回答

我的问题是在我的图像名称中使用无效字符(额外的/):

myusername/something/image

无效的映像名称。/上的用户名都尝试dangillmor something-image。希望这能帮助到一些人。

在使用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

使用以下命令:

$ 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

如果在使用Azure容器注册表时遇到此问题,可以先登录到注册表来解决。

docker login yourregistry.azurecr.io

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

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

最后按一下。

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

是的,也许有些尴尬,但似乎根本没有关于这个问题的明确文档:我刚刚用私有存储库注册了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!