我正在按照这个链接创建我的第一个docker映像,它成功了,现在我试图从这个链接将这个映像推到我的docker存储库中。但是每当我试图将这个映像推入存储库时,我就会得到这种类型的错误。
denied: requested access to the resource is denied
注:我已成功登录docker
我正在按照这个链接创建我的第一个docker映像,它成功了,现在我试图从这个链接将这个映像推到我的docker存储库中。但是每当我试图将这个映像推入存储库时,我就会得到这种类型的错误。
denied: requested access to the resource is denied
注:我已成功登录docker
当前回答
使用以下命令:
$ 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
其他回答
我也有这个问题。事实证明,我使用的是免费层,并试图在私有存储库中推送多个图像。将一张图片设为私有,其余的设为公共,这对我来说很管用。
对于那些试图将映像推送到自己的Nexus存储库管理器的人,请执行以下操作:
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
我的答案与Azure DevOps相关,类似于我在以下通用管道中遇到的问题(它更具体,但它可能有助于节省时间):
从github获取资源 构建docker映像 推送docker镜像到dockerhub
我在推送拒绝时收到的错误:对资源的请求访问被拒绝发送到这里。
请注意映像名称中包含的变量$(Build.Repository.Name)。它默认是来自github的存储库名称,但为了让您的推送工作,它应该是dockerhub_account_username/your_dockerhub_repository_name。
将$(build . repository . name)替换为dockerhub_account_username/your_dockerhub_repository_name在映像名称字段中用于构建和推送步骤。
dockerhub api需要这一点来知道在哪里推送图像。
Docker登录参数在~/. Docker /config。Json应该正确设置(这是在登录后自动完成)
1)不传递SERVER参数登录:
$ echo "<password>" | docker login -u foo --password-stdin
成功登录后,在~/.docker/config中会出现如下结果。Json和push image成功。
***
"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和push image失败。
***
"index.docker.io": {
"auth": "YWNhcm***"
}
***
我在Azure管道中遇到了类似的问题。我错过了在repository部分添加docker-id。
在Azure中,在推送时,如果仅使用名称,例如<repo-name>,可能无法工作。它需要完全限定的回购名称,其中还包括docker-id。
Use
repository: '<docker-id>/<repo-name>'
而不是
repository: '<repo-name>'
管道代码片段:
- task: Docker@2
inputs:
containerRegistry: 'service-connection-name'
repository: '<docker-id>/<repo-name>'