[英]denied: requested access to the resource is denied: docker
在 docker push 之前,您可能需要将 docker repo 切换为私有。
感谢Dean Wu提供的答案和ses的这个评论,在推送之前,记得先退出,然后从命令行登录到你的docker hub账号
# you may need log out first `docker logout` ref. https://stackoverflow.com/a/53835882/248616
docker login
根据文档:
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 初学者课程时遇到了同样的问题。 我通过在 docker push 调用之前进行docker login
解决了这个问题。
我有同样的问题,但这里给出的接受的答案对我不起作用。 我尝试了几个步骤,最终能够绕过它来推动它。 希望这可以帮助某人。
以下是对我有用的步骤:
1)登录码头。
docker login -u sirimalla
2)标记您的图像构建
我的图片名称是: mylocalimage ,默认情况下它有标签:最新
我的用户名是: sirimalla在 docker cloud 中注册,我创建了一个名为: dockerhub的公共存储库
所以我的个人存储库现在变成了: sirimalla/dockerhub ,我想用标签推送我的图像: myfirstimagepush
我标记如下:
docker tag mylocalimage:latest sirimalla/dockerhub:myfirstimagepush
3) 将图像推送到我的个人 docker 存储库,如下所示
docker push sirimalla/dockerhub:myfirstimagepush
它成功地推送到了我的个人 docker repo。
使用以下命令:
$ 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
还需要注意的重要一点是,当您标记图像时,您使用命名空间标记它,然后使用您的存储库 / mydevrepo标记它。 这让我在关注 Docker 文档时感到困惑。 之后我使用了:
docker login
然后我使用'tagged name'推送我的图像。
docker push {namespace}/mydevrepo
不知道 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
我也遇到了这个问题,我在这里测试了解决方案,但无济于事,我已正确登录,至少根据docker login
的输出,但我仍然无法推送图像。 最终起作用的只是做:
docker logout
然后再次docker login
,就这么简单。 我不确定发生了什么,但强制重新登录有效。
我遇到了同样的问题,我将我的图像名称命名为something/image-name
但我尝试使用<docker-hub-username>/image-name
并且它就像一个魅力。
步骤1
docker login --username=jp9573
第2步
docker push jp9573/todo
早些时候我给了jaypatel/todo
,我只是把它改成了username/image
模式。 通过这种方式,我不必标记图像或任何东西。 我认为这对新人来说是一个好方法。
当我在标记图像时使用我的 docker hub 名称时,它对我有用。 (这里,xyz 是一个 docker hub 名称)
# Login to docker hub account
docker login
# tag image
docker tag nginx xyz/nginx
# push image
docker push xyz/nginx
我今天有同样的问题。 唯一对我有用的是显式登录到“docker.io” :
docker login docker.io
我尝试了各种其他名称,登录似乎可以工作,但后来会导致以下错误。
请求的资源访问被拒绝
Docker 还限制了您可以拥有的私有存储库的数量。 如果您通过从本地计算机推送来创建私有存储库,它将创建存储库,但无法向其推送或从中提取任何内容,并且您将收到“请求的资源访问被拒绝”错误。
我的问题很简单,只是在我的图像名称中使用了无效字符(额外的 /):
myusername/something/image
是无效的图像名称。 试试 myusername/something-image。 希望这可以帮助某人。
docker 处理用户 ID 和存储库的方式可能有点混乱。 假设您在 docker hub 上创建了一个用户帐户 xyz。 新帐户自动建立命名空间xyz
。 然后创建一个名为 myrepo 的存储库。 存储库名称实际上是xyz/myrepo
。
要推送图像,您应该这样做:
docker push docker.io/xyz/myrepo
如果需要,您可以添加 ":latest" 或不同的标签。
如果您获得requested access to the resource is denied
错误消息:
操作系统:Ubuntu16.04
原因:我删除了客户端配置文件( ~/.docker/config.json )
解决方案:
将图像名称更改为“用户名”/“图像名称”
如果您在使用 Azure Container Registry 时遇到此问题,您可以通过先登录到您的注册表来解决它。
docker login yourregistry.azurecr.io
然后标记您的图像以匹配您的注册表的主机名。
docker image tag yourimagename:[version] yourregistry.azurecr.io/yourimagename:[version]
然后最后推它。
docker push yourregistry.azurecr.io/yourimagename:[version]
我的回答与 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 https://hub.docker.com ”更改为“ docker login docker.io ”并提供用户名和密码后,它起作用了。
然后按照以下命令:
docker tag local-image:tagname new-repo:tagname
docker push new-repo:tagname
注意: “new-repo”将包含“Docker ID + Repo 名称”
在这里,我在运行以下命令之前在 Docker Hub 中创建了“ubuntu”存储库。
例子:
docker tag alok/ubuntu:latest aloktiwari2007/ubuntu:latest
docker push aloktiwari2007/ubuntu:latest
当您已经使用其他帐户登录时,有时您可能会遇到此问题。 在这些情况下,您必须:
docker logout
接着
docker login
简单的工作解决方案:
去这里https://hub.docker.com/
创建一个 PRIVATE 存储库,其名称例如johnsmith/private-repository
这是您在构建映像时将用于映像的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
完毕!
对于那些尝试将图像推送到他们自己的 Nexus Repository Manager 的人,请执行以下操作:
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
docker登录后,您需要使用前缀命名您的图像。
例如,如果您在 docker-hub 中的用户名是Shah
,则图像应该是:
Shah/firstimage
我知道这个问题已经有很多答案,但没有一个对我有帮助。
我观察到的是构建映像非常快,并且推送到 docker.io 会导致错误:
denied: requested access to the resource is denied
我还注意到,做一个
docker image ls
透露我的图像的最新版本是几天前的。
我不得不做一个
docker container prune
摆脱停止的容器,以及
docker image prune -a
摆脱旧图像。 然后我可以成功构建并推送我的图像。
“拒绝:请求的资源访问被拒绝”不是来自 docker.io,而是来自本地 docker。 有趣的是,它在构建过程中没有失败。
我遇到过同样的问题。 就我而言,我登录 index.docker.io 并将图像推送到 docker.io/username/image:tag。
解决方案是通过运行以下命令登录 docker.io:
export CI_REGISTRY=docker.io
docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
docker push USERNAME/IMAGE:TAG
输出是:
The push refers to repository [docker.io/USERNAME/IMAGE:TAG] eeb7e16c6369: Preparing 6bd09f46d0ae: Preparing f5a7f7a3fb28: Preparing 07952c1df7f6: Preparing a4522c0d203b: Preparing 3e207b409db3: Preparing 3e207b409db3: Waiting a4522c0d203b: Layer already exists 3e207b409db3: Layer already exists f5a7f7a3fb28: Pushed 6bd09f46d0ae: Pushed 07952c1df7f6: Pushed eeb7e16c6369: Pushed latest: digest: sha256:7ce256fa83ef1eebcaaaa460c4d73f87f2adf304bc6e6c1b83a19d987cd61ad5 size: 1579 Running after_script 00:02 Saving cache 00:01 Uploading artifacts for successful job 00:02 Job succeeded
问候。
我也有这个问题。 原来我正在使用免费层并尝试在私有存储库中推送超过 1 个图像。 将 1 张图片设为私有,其余的设为公开对我有用。
就我而言,我正在推动一个组织,我所在的团队对存储库具有管理员权限。
所以我的推送命令是: docker push org-name/image-name
我可以成功推送到用户名/图像名,但不能推送到组织。 我三次检查了权限。 没有任何效果。
解决方案是从 docker hub 中删除 repo 并使用以下命令重新推送: docker push org-name/image-name
对于它的价值,我认为 repo 最初是在帐户转换为组织之前推送的。
我真的希望这可以帮助某人(作为我自己首先查看最终答案):
我不断尝试输入
docker push user/repo/tag
反而
docker push user/repo:tag
因为我也这样制作了我的标签:
docker tag image user/repo/tag
......所有的地狱都失败了。
我真诚地希望你不要重蹈我的覆辙。 我在这上面浪费了30分钟...
我添加另一个答案的速度很慢,但是提到docker login
的已接受答案和剩余答案缺少一个边缘案例来解决其他人在评论中陈述的问题。
docker login <private-repo-host>:<port>
强调需要输入的port
可能是那些仍在搜索的人的解决方案。 docker login
或docker login <private-repo-host>
可能会毫无问题地连接,但是在推送图像时,您将收到与 OP 相同的错误。
也就是说,您可以在不定义主机或端口的情况下进行连接,但仍然可以获得:
...
登录成功
就我而言,我使用的是自托管 GitLab 内置的 docker-registry,它设置为使用端口4567
。 验证必须从哪个端口访问注册表可能是冒险的。 如果不指定所述端口docker login <our.gitlab.host>
将登录成功,但会给出 OP 询问的相同问题:
...
推送是指存储库 [...]
拒绝:禁止访问
如果您使用的是 docker.io/dockerhub,您可能不会遇到这个问题,但是如果您有一个自托管/私有注册表解决方案,那么您需要使用 docker 注册表的主机和端口显式登录的可能性会增加.
我也遇到了这个错误消息,使用 Gitlab 注册表。 不同之处在于我试图从以前的版本中更改图像的名称。 那里的问题是被推送的图像的注册表不存在,因为图像的新名称与我组中的任何项目都不匹配。
TLDR:在 Gitlab 中,图像名称必须与项目名称匹配。
我从Azure pipeline
遇到了类似的问题。 我错过了在存储库部分添加docker-id
。
从Azure
推送时,如果仅使用名称,例如<repo-name>
,可能无法正常工作。 它需要完全限定的 repo 名称,其中还包括docker-id
。
利用
repository: '<docker-id>/<repo-name>'
代替
repository: '<repo-name>'
管道片段:
- task: Docker@2
inputs:
containerRegistry: 'service-connection-name'
repository: '<docker-id>/<repo-name>'
如果在docker login
之后它仍然失败,请确保您尝试推送到的存储库是首先创建的。
所以,如果它对任何人都有帮助......
我遇到了同样的问题,这就是我的问题和修复问题。
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
所以出于某种原因,我不得不在标签中包含端口作为存储库名称的必需部分。
希望这对其他人有帮助。
以前的所有答案都是正确的,我只想添加我看到的未提及的信息;
如果项目是私有项目,要正确推送图像,则必须配置个人访问令牌或部署令牌并启用 read_registry 密钥。
来源: https ://gitlab.com/help/user/project/container_registry#using-with-private-projects
希望这会有所帮助(如果问题是及时发布的)
我带着与上述相同的消息来到这里,但来自 Azure DevOps。
就我而言,我使用的是 docker-compose,而不仅仅是 docker,并在 yaml 中编写构建管道。
- task: DockerCompose@0
displayName: 'Push services'
inputs:
azureSubscription: '$(Parameters.azureSubscriptionEndpoint)'
azureContainerRegistry: '$(Parameters.azureContainerRegistry)'
dockerComposeFile: '$(Parameters.dockerComposeFile)'
additionalDockerComposeFiles: |
docker-compose.release.yml
docker-compose.ci.yml
dockerComposeFileArgs: 'PublishFolder=publish'
action: 'Push services'
additionalImageTags: '$(Build.BuildId)'
includeLatestTag: true
我收到的消息是明确表示它正在尝试推送到 docker.io,这不是我想要的。 我原本打算将它转到我的 Azure 容器注册表。
缺少的是输入下的这一行:
containerregistrytype: Azure Container Registry
上面构建yaml的现有管道向导根本没有这行。 希望这可以帮助其他人在 Azure DevOps 上大发雷霆。
TL;DR docker login
在 macOS 上对我不起作用,但应用程序中的 docker login 有效
当直接从终端使用时,命令docker login
成功询问了我的凭据,并且在我正确输入它们之后(记住没有电子邮件,只有 docker ID 将起作用)它宣布login succeeded
,但任何推送请求最终都会denied: requested access to the resource is denied
但是,当我从正在运行的 macOS docker 应用程序登录时(参见工具栏中的图标),它可以正常工作。 所以docker login
和正在运行的 docker app/daemon 之间可能存在一些不一致
不允许误导标签名称。
我解决这个问题的方法:
Command 1(Create Tag): docker tag my-nginx:latest rsachde/nginx-repository/trys:1.0 (Didn't push)
Command 2(Push): docker push rsachde/nginx-repository/try:1.0
输出:
denied:请求的资源访问被拒绝
Command 1.1(Create Tag): docker tag my-nginx:latest rsachde/nginx-repository/:trys
Command 2.2(Push): docker push rsachde/nginx-repository:trys
输出:
尝试:摘要:sha256:405b6f0ae25772ef71b8f59fd6a56ff9b426f50bd24bac2b5db41f65efd3387c 大小:1365
误导是标签,请确保您理解这一点。
在尝试了每个高分解决方案之后,我仍然没有运气。
直到我改变我的焦点和搜索关键字以包括我的凭证助手 - 通过。
如果这对您来说是类似的情况(使用任何类型的 docker-credential-helpers 并且只是按照一般指南进行设置),请尝试查看这些步骤并查看是否遗漏了任何内容。
例如,我使用pass作为 docker 的 credstore,当我刚刚关注顶部时,错过了将我的 dockerhub 帐户密码插入专用pass-name docker docker-credential-helpers/docker-pass-initialized-check
的步骤搜索结果设置通行证。
发出以下命令后, docker push
终于对我施了一些怜悯。
pass insert docker-credential-helpers/docker-pass-initialized-check
有关更多详细信息,请参阅此答案。
这可能非常特定于 DigitalOceans Container Registry,但它可能会有所帮助:
在我的情况下,我的管道在 docker docker push
之后触发清理作业( doctl registry garbage-collection start
),这将注册表置于只读模式(请参阅doc )。 因此,清理作业处于活动状态时的下一次推送将被denied: requested access to the resource is denied
。
如果doctl registry garbage-collection get-active
返回 404,则作业完成并且docker push
将成功完成。
使用-a
推送。 st docker push username/image -a
访问被拒绝可能是由于 docker 存储库权限不公开(您可以仔细检查)
你需要拉来检查它是否正常。
推送成功后打开“标签”查看所有可用标签
这在 Windows 10 上对我有用
码头工人登录
有一个 docker 文件,要求是构建一个镜像并立即将其推送到 Docker hub
登录到 Docker 中心
sudo docker login -u 你的用户名
输入密码
构建镜像
sudo docker build -t your_username /demorepo:1.0
上面没有提到图像名称,因为your_username /demorepo 是 docker hub 中的一个 repo。 标记名称为 1.0
推送图片
sudo docker push your_username /demorepo:1.0
将已经存在的镜像推送到 Docker hub
登录到 Docker 中心
sudo docker login -u 你的用户名
输入密码
标记您的图像(假设您的图像命名为 test_docker:1.0)
sudo docker tag test_docker:1.0 your_username /demorepo:firstpush
上面,firstpush 是为您的图像指定的标签名称,带有 1.0 标签的 test_docker。
重要:(标记时,未提及图像名称)
现在在 docker 图像中你将有 2 个图像,一个说 test_docker 1.0 另一个说your_username /demorepo firstpush
推送图片
sudo docker push your_username /demorepo:firstpush
将您的图像重命名为用户名/图像名称 docker tag your-current-image/current-image dockerhub-username/some-name:your-tag(例如:latest)
尝试退出“Docker for Windows”应用程序并退出https://hub.docker.com/站点,然后执行“docker login”和“docker push”。 它对我有帮助。
命令提示符下的 docker login 不起作用。 尝试推送时,我不断收到“拒绝访问资源的请求”。
在登录到 docker for windows 应用程序本身后,docker push 工作得很好。 希望这可以帮助某人。
万一其他人遇到这种情况 - 就我而言,原因是我使用(已弃用) docker compose
方法来推送图像。 切换到预期的docker push
为我解决了这个问题。
另一个(非常聪明的)原因是:您的计划没有私人回购。
在我的情况下 sudo -E 失败并显示此消息。 解决方案是在没有 sudo 的情况下提供 docker 访问权限(创建一个组 docker,将(Jenkins)用户添加到组中,在 /var/run/docker.sock 上设置组)。 现在docker push
不需要 sudo,它可以工作了。
我在 git 上的问题是项目权限配置。 我通过在设置->常规->可见性、项目功能、权限中启用“容器注册表”并为我的项目启用容器注册表来修复它( 链接):
Docker 集线器计划对命名空间可以使用的私有存储库的数量有限制。 例如,免费计划只允许您在任何时间点为一个帐户使用一个私有存储库。
如果您在计划限制范围内,那么您的推送将成功。 否则,将创建一个带有适当标签的空存储库,但不会推送图像本身。
就我而言,我在推送图像之前使用 Web 控制台将存储库创建为公共存储库。
我在 docker push 上苦苦挣扎,既使用 Fabric8 Maven 插件(在 Windows 10 上),又直接从命令行调用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 clean package docker:build docker:push
,最后,图像出现在我的仓库中,这是我试图解决的问题。
顺便说一句,为了回答 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/config.json
中的 Docker 登录参数应正确设置(登录后自动完成)
1)不传递SERVER参数登录:
$ echo "<password>" | docker login -u foo --password-stdin
成功登录后,在~/.docker/config.json中的结果如下,并且推送图像成功。
***
"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中会出现如下结果,并且推送图像失败。
***
"index.docker.io": {
"auth": "YWNhcm***"
}
***
我遇到了同样的错误。 不幸的是,该错误是由于在 docker push 之前使用sudo造成的。 此外,您可能需要从 dockerhub 中删除存储库,因为您可以拥有的存储库数量是有限的。 并且,请尝试docker logout
然后docker login
我有一个类似的问题,我通过创建一个具有相同图像名称的存储库来解决它,然后将它推送到 docker,它工作
是的,也许很尴尬,但似乎根本没有关于这个问题的明确文档:我刚刚注册了 Docker Pro with private repositories 。 我创建了一个私有存储库,然后尝试推送到它。 收到可怕的“拒绝”消息。
推送到我的公共回购工作正常,所以我知道我登录正确。
在前面的 30 个答案中尝试了与 Docker Hub 相关的所有内容之后......我终于明白了私有仓库的工作原理:它们与公共仓库相同,但有一个额外的步骤。
推送到存储库时 - Docker Hub 帐户中的任何存储库 - 您需要在image:tag
加上您的用户名,例如:
给定以下值,
用户名 = 你的用户名
图像名称 = 图像
标记 = 标记
1)标记(或提交)本地图像,使用您的用户名添加前缀:
docker tag theimage:thetag yourusername/theimage:thetag
备注:
docker tag theimage:thetag yourusername/yourorganizationname/theimage:thetag
latest
的, :thetag
部分可以省略; 如果您不输入:thetag
部分,Docker 假定:latest
2)将前缀镜像推送到 Docker Hub:
docker push yourusername/theimage:thetag
或者
docker push yourusername/yourorganizationname/theimage:thetag
额外的步骤:
任何一个
在上述第 1 步之前,在您的 Docker Hub 帐户中创建一个私有存储库。
请注意,存储库名称必须与您计划推送的theimage
相同。 不要在存储库名称中包含thetag
部分。 例如,如果您的图像是ubuntu:14.04
,您可以将存储库命名为ubuntu
。
或者
如果您没有提前创建存储库(这不是必需的!):转到您在Docker Hub中的帐户; 单击新推送的存储库,然后单击其设置选项卡 - 并将您的存储库设为私有。
我看到其他人使用私人仓库用两个前缀标记它们,例如xyz/abc/theimage:thetag
,我认为第二个前缀是我创建的用于将仓库标记为私有的东西。 不——这仅适用于组织。 删除任何第二个前缀并将我的存储库名称设置为只是theimage
修复了我被拒绝的错误!
另一个注意事项:每个 repo 都包含具有给定 repo 名称的图像的所有标记版本。 因此,例如, ubuntu:latest
和ubuntu:14.04
都将在ubuntu
存储库中。
与 Docker 一起玩!
最终对我有用的唯一一件事是在 docker hub 中创建一个公共存储库并使用相同的名称标记本地图像,并在协作者 {in dockerhub} 中添加我的用户 ID,最后推送它。
如果您已经登录并且仍然收到错误消息。 请按照步骤,
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
步骤 1:更改 docker 帐户中的隐私模式
第 2 步:运行 screenshort 中提到的以下命令:
在 Azure Devops 中创建 CI 管道以构建 docker 映像并将其推送到 Docker 集线器时,我遇到了同样的问题。 我犯的错误是在容器存储库部分提供了错误的条目。
在 buildAndPush 任务中,我在容器存储库字段中给出了存储库名称。 实际上存储库名称应附加 Docker Hub 用户名/。 例如,您的用户名是 myuser,存储库名称是 test,然后提供条目为 myuser/test。 一旦我纠正了这个问题,管道就会成功运行,并且图像被推送到我的 docker 集线器存储库
我在 ibmcloud 中遇到了同样的错误。 我添加了命名空间,然后尝试推送我的图像,它解决了这个问题。
ibmcloud cr namespace-add txts
我有完全相同的问题。
我会通过这个博客强烈推荐给 go。它帮助了我。
我的问题与 ACR 更相关。
docker 客户端将引用 config.json 文件,如果您的 SP 凭据文件将被存储(角色所有者),那么在解决方案中帮助我的博客部分是:
点击这里!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.