之前的回答都是正确的,我只想补充一个未提及的信息;
如果项目是私有项目,为了正确推送镜像,必须配置个人访问令牌或启用read_registry密钥的部署令牌。
来源:https://gitlab.com/help/user/project/container_registry#using-with-private-projects
希望这有所帮助(即使问题发布时间已经很久远)
docker login
之后仍然失败,请确保您尝试推送的存储库首先已创建。TL;DR 在 macOS 上,docker login
对我不起作用,但是从应用程序中的 docker login 能够正常工作
当直接从终端使用命令 docker login
时,它成功地要求我的凭据,并且在我正确输入它们后(请记住没有电子邮件,只有 docker ID 可以工作)它宣布 登录成功
,但任何推送请求都会以 denied: requested access to the resource is denied
结束。
然而,当我从运行的 macOs docker 应用程序中登录时(从工具栏中的图标),它可以工作。因此,docker login
和正在运行的 docker 应用程序/守护程序之间可能存在一些不一致。
在Azure Devops中创建CI流水线以构建和推送docker镜像到Docker Hub时,我遇到了相同的问题。我的错误在于在容器存储库部分提供了错误的输入。
在buildAndPush任务中,我在容器存储库字段中提供了仓库名称。实际上,仓库名称应该附加Docker Hub用户名/。 例如,您的用户名是myuser,仓库名称为test,则应将条目提供为myuser/test。当我纠正了这个问题后,流水线成功工作,并且镜像被推送到我的docker hub存储库。
doctl registry garbage-collection start
) 在 docker push
之后,这会将注册表设置为只读模式(请参见doc)。因此,在清理作业处于活动状态时进行的下一次推送将得到denied: requested access to the resource is denied
。doctl registry garbage-collection get-active
返回404,则作业已完成,并且docker push
将成功完成。使用-a
进行推送,例如docker push username/image -a
如果出现访问被拒绝的情况,可能是由于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
接下来,我尝试从网络上的笔记本电脑向Galaxy推送图像,所以我做了以下操作:
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
因为某些原因,我不得不在标签中包含端口号,作为仓库名称的必要部分。
如果您已经登录但仍然遇到错误,请按照以下步骤操作:
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
sudo
- Sisir