我正在关注this link创建我的第一个docker Image并且它成功了,现在我试图将这个图像从这个link推入我的docker存储库。但每当我试图将此Image推入存储库时,我就会遇到此类错误。
denied: requested access to the resource is denied
有人能给我一些暗示这个问题吗?任何帮助将不胜感激。
注意:我已成功登录docker
感谢answer提供的Dean Wu和this comment提供的ses,在推送之前,请记得从命令行登录到docker hub帐户
docker login
根据docs:
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.io”:
docker登录docker.io
我尝试了各种其他名称,登录似乎可以工作,但后来会导致“请求访问资源被拒绝”错误。
我的问题是在我的图像名称中使用无效字符(额外的/):
myusername/something/image
是无效的图像名称。试试myusername / something-image。希望这有助于某人。
简单工作方案:
到这里https://hub.docker.com/
创建一个名称为johnsmith/private-repository
的PRIVATE存储库,这是在构建图像时用于图像的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
完成!
如果您在使用Azure容器注册表时遇到此问题,可以先登录注册表来解决此问题。
docker login yourregistry.azurecr.io
然后标记您的图像以匹配您的注册表的主机名。
docker image tag yourimagename:[version] yourregistry.azurecr.io/yourimagename:[version]
然后最后推动它。
docker push yourregistry.azurecr.io/yourimagename:[version]
我也遇到了这个问题,我在这里测试了解决方案,但无济于事,我已正确登录,至少根据docker login
的输出,但仍然无法推动图像。最终工作的只是做:
docker logout
然后docker login
再次,这是微不足道的。我不确定发生了什么,但迫使重新登录工作。
对于那些尝试将图像推送到他们自己的Nexus Repository Manager的人,请执行以下操作:
1)登录到Nexus Repository Manager(端口8443与特定的Docker主机存储库相关联)
sudo docker login xxx.mydomain.com:8443
2)使用您的NEXUS SERVER 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有关,我对以下常见管道有类似的问题(它更具体但可能有助于节省时间):
我在推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
之后它仍然失败,请确保首先创建您尝试推送的存储库。
我也有这个问题。事实证明我正在使用免费套餐并尝试在私有存储库中推送超过1个图像。将1张图片设为私有,其余公众为我工作。
我在参加码头初学者课程时遇到了同样的问题。我通过在docker push调用之前执行adocker login
解决了这个问题。
在我的情况下,我正在推动一个组织,我在一个拥有存储库管理权限的团队中。
所以我的推送命令是:docker push org-name/image-name
我可以成功推送到用户名/图像名称,但不能推送到组织。我三重检查权限。没有任何效果。
解决方案是从docker hub删除repo并使用:docker push org-name/image-name
再次刷新
对于它的价值,我认为回购最初是在帐户转换为组织之前推出的。
将您的图像重命名为username / image-name docker tag your-current-image / current-image dockerhub-username / some-name:your-tag(example:latest)
尝试退出“Docker for Windows”应用程序并退出https://hub.docker.com/网站,然后执行“docker login”和“docker push”。这对我有帮助。
docker从命令提示符登录无效。在尝试推送时,我不断获得“请求访问资源被拒绝”。
登录到windows应用程序本身的docker后,docker push工作得很好。希望这有助于某人。
在docker登录后,您需要使用前缀命名您的图像。
例如如果您在docker-hub中的用户名是Shah
,则图片应为:
Shah/firstimage
如果有其他人遇到这个 - 在我的情况下,原因是我使用(不赞成的)docker compose
方法来推送图像。切换到预期的docker push
解决了我的问题。
另一个(非常聪明)的原因是:你的私人回购与你的计划。
在我的情况下sudo -E失败了这条消息。解决方案是在没有sudo的情况下提供访问do docker(创建一个组docker,将(Jenkins)用户添加到组中,在/var/run/docker.sock上设置组)。现在docker push
不需要sudo,它的确有效。
所以,这对任何人都有帮助...... 我有同样的问题,这就是我的问题和FIX。
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
因此,出于某种原因,我必须将标记中的端口包含为存储库名称的必需部分。
希望这有助于其他人。我有同样的问题,但这里给出的接受的答案对我不起作用。我尝试了几步,最终能够绕过去推动它。希望这有助于某人。
以下是为我工作的步骤:
1)登录docker。
docker login -u sirimalla
2)标记您的图像构建
我的图像名称是:mylocalimage,默认情况下它有标签:latest 我的用户名是:sirimalla在docker cloud注册,我创建了一个名为dockerhub的公共存储库
所以我的个人资料库现在变成:sirimalla / dockerhub,我想用标签推送我的图像:myfirstimagepush
我标记如下:
docker tag mylocalimage:latest sirimalla/dockerhub:myfirstimagepush
3)将图像推送到我的个人docker存储库,如下所示
docker push sirimalla/dockerhub:myfirstimagepush
它成功地推送到我的个人码头仓库。
所有以前的答案都是正确的,我想添加一个我没看过的信息;
如果项目是正确推送图像的私有项目,则必须配置个人访问令牌或部署令牌并启用read_registry键。
来源:https://gitlab.com/help/user/project/container_registry#using-with-private-projects
希望这是有帮助的(如果问题到目前为止发布的话)
还需要注意的是,在标记图像时,使用命名空间然后使用存储库/ mydevrepo标记它。在关注Docker文档时,这让我很困惑。之后我使用了:
docker login
然后我使用'标记名称'推送我的图像。
docker push {namespace}/mydevrepo
使用以下命令:
$ 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
docker处理用户ID和存储库的方式可能有点令人困惑。假设您在docker hub上创建了一个用户帐户xyz。新帐户自动建立命名空间xyz
。然后创建一个名为myrepo的存储库。存储库名称实际上是xyz/myrepo
。
要推送图像,您应该:
docker push docker.io/xyz/myrepo
如有必要,您可以添加“:latest”或其他标记。
如果您收到requested access to the resource is denied
错误消息:
不确定docker hub发生了什么,但是没有一个解决方案适合我。以下是截至2018年1月最终为我工作的解决方法:
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
操作系统:Ubuntu16.04
原因:我删除了客户端配置文件(〜/ .docker / config.json)
解:
Docker还可以限制您可以拥有的私有存储库的数量。如果您通过从本地计算机推送来创建私有存储库,它将创建存储库,但不能进一步推送到它或从中提取,并且您将获得“请求访问资源被拒绝”错误。