否认:请求访问资源被拒绝:docker

时间:2017-02-01 16:08:53

标签: docker dockerfile

我正在关注this link创建我的第一个docker Image并且它成功了,现在我正尝试将此Image从此link推送到我的docker存储库中。但每当我试图将此Image推入存储库时,我都会遇到此类错误。

denied: requested access to the resource is denied

enter image description here

有人能给我一些暗示这个问题吗?任何帮助都会受到赞赏。

注意:我已成功登录docker

53 个答案:

答案 0 :(得分:368)

感谢answerDean 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

答案 1 :(得分:177)

我在参加码头初学者课程时遇到了同样的问题。我在docker push call之前执行docker login解决了这个问题。

答案 2 :(得分:47)

我有同样的问题,但这里给出的接受的答案对我不起作用。 我尝试了几步,最终能够绕过去推动它。希望这有助于某人。

以下是为我工作的步骤:

1)登录docker。

END

2)标记你的图像构建

我的图片名称是: mylocalimage ,默认情况下标签为:最新
我的用户名是: sirimalla ,已在docker cloud注册,我创建了一个名为“ dockerhub

的公共存储库

所以我的个人资料库现在变成了: sirimalla / dockerhub 我想用标签docker login -u sirimalla

来推送我的图片

我标记如下:

myfirstimagepush

3)将图像推送到我的个人码头存储库,如下所示

docker tag mylocalimage:latest sirimalla/dockerhub:myfirstimagepush

它成功地推送到我的个人码头仓库。

答案 3 :(得分:39)

另外需要注意的是,在标记图片时,请使用命名空间然后使用您的存储库/ mydevrepo 对其进行标记。在关注Docker文档时,这让我很困惑。之后我用了:

docker login

然后我使用'标记的名称' 推送我的图片。

docker push {namespace}/mydevrepo

答案 4 :(得分:34)

使用以下命令:

$ 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

e.g。我有像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

答案 5 :(得分:10)

docker处理用户ID和存储库的方式可能有点令人困惑。 假设您在docker hub上创建了一个用户帐户xyz。新帐户会自动建立名称空间xyz。 然后创建一个名为myrepo的存储库。存储库名称实际上是xyz/myrepo

要推送图像,您应该这样做:

docker push docker.io/xyz/myrepo

如有必要,您可以添加“:latest”或其他标记。

如果收到requested access to the resource is denied错误消息:

  1. 转到https://hub.docker.com/并以xyz身份登录。
  2. 点击您的存储库xyz / myrepo。
  3. 点击协作者。
  4. 将xyz添加为协作者。

答案 6 :(得分:8)

不确定docker hub发生了什么,但发布的解决方案都没有为我工作。以下是截至2018年1月为我工作的解决方法:

  1. 转到hub.docker.com并将您的存储库更改为私有
  2. 在你的shell中执行:
  3. !help

    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

    1. 返回码头中心并将回购更改回公众。 这对我有用。

答案 7 :(得分:7)

操作系统:Ubuntu16.04

原因:我删除了客户端配置文件(〜/ .docker / config.json

解决方案:

  • 重启docker。
    服务泊坞重启
  • 需要输入登录信息,然后自动生成配置文件 docker login --username = yourdockerhubername --email=youremail@company.com

答案 8 :(得分:5)

我今天遇到了同样的问题。对我有用的唯一事情是明确登录到“docker.io”:

docker login docker.io

我尝试了其他各种名称,登录似乎可以正常工作,但之后会导致“请求访问资源被拒绝”错误。

答案 9 :(得分:5)

我的问题很简单,我在图片名称中使用了无效字符(一个额外的/):

myusername/something/image

是无效的图像名称。尝试myusername / something-image。希望这对某人有帮助。

答案 10 :(得分:5)

我遇到了同样的问题,我给我的图像名称为something/image-name,但我尝试使用<docker-hub-username>/image-name,它的工作原理很吸引人。

第1步

docker login --username=jp9573

第2步

docker push jp9573/todo

在我之前给jaypatel/todo时,我只是将其更改为username/image模式。这样,我不必标记图像或任何东西。我认为这对新人来说是个好方法。

答案 11 :(得分:5)

Docker还可以限制您拥有的私有存储库的数量。如果您通过从本地计算机推送来创建私有存储库,它将创建存储库,但没有任何进一步可以推送到它或从中提取,并且您将获得所请求的访问权限资源被拒绝&#34;错误。

答案 12 :(得分:3)

从应用登录。我一直在尝试只从终端运气而没有运气。

这是版本17.06.1

enter image description here

答案 13 :(得分:3)

简单的工作解决方案:

到这里https://hub.docker.com/创建一个名称为johnsmith/private-repository的私有存储库,这是构建映像时用于图像的NAME/REPOSITORY

  • 首先,docker login

  • 其次,我使用&#34; docker build -t johnsmith/private-repository:01 .&#34;创建图像,我使用&#34; docker images&#34;确认创建的图像,如下面的黄色框中所示:(抱歉,我不能粘贴表格格式,只能粘贴文本字符串)

  

johnsmith / private-repository(REPOSITORY)01(TAD)c5f4a2861d6e(IMAGE ID)2天前(已创建)305MB(SIZE)

  • 第三,我使用docker push johnsmith/private-repository:01

完成!

答案 14 :(得分:3)

我也遇到了这个问题,我在这里测试了解决方案,但无济于事,至少根据docker login的输出,我已经正确登录了,但仍然无法推送图像。最终有效的方法只是要做:

docker logout

然后再docker login,那是微不足道的。我不确定发生了什么,但是强制重新登录有效。

答案 15 :(得分:3)

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

docker login yourregistry.azurecr.io

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

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

然后最后推动它。

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

答案 16 :(得分:2)

当我在标记图像时使用我的 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

答案 17 :(得分:2)

我的答案与我在以下常见管道中遇到的类似Azure DevOps问题有关(它更具体,但它可以帮助某人节省时间):

  1. 从github获取资源
  2. 构建docker映像
  3. 将docker映像推送到dockerhub

在推送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需要使用它来知道将映像推送到何处。

答案 18 :(得分:2)

对于那些尝试将图像推送到自己的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

答案 19 :(得分:2)

我很难再添加一个答案,但是被接受的答案和提及docker login的其余答案都缺少解决其他人在评论中指出的问题的优势。

docker login <private-repo-host>:<port>

强调输入port可能是那些仍在搜索的解决方案。 docker logindocker login <private-repo-host>可以毫无问题地连接,但是当需要推送图像时,您将得到与OP相同的错误。

也就是说,您可以不带定义主机或端口的连接而仍然获得:

...

登录成功

就我而言,我使用的是自托管的GitLab,内置于docker-registry中,该端口设置为使用端口4567。验证必须从哪个端口访问注册表可能是一种冒险。如果未指定上述端口docker login <our.gitlab.host>,则会成功登录,但会给OP询问相同的问题:

...

推送是指存储库[...]

拒绝:禁止访问

如果使用的是docker.io/dockerhub,则可能不会出现此问题,但是如果您使用的是自托管/私有注册表解决方案,则概率增加,您需要同时使用主机和端口来显式登录Docker注册表。

答案 20 :(得分:2)

在我将“ 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 +存储库名称”

在运行以下命令之前,我已经在Docker Hub中创建了“ ubuntu”存储库。

示例:

docker tag alok/ubuntu:latest aloktiwari2007/ubuntu:latest

docker push aloktiwari2007/ubuntu:latest

答案 21 :(得分:1)

这个答案对我未来的自我和其他人一样重要。正确登录后,我遇到了这个确切的问题,但是当我的私有存储库数量大于或等于计划允许的限制时,我试图推送到私有存储库。

我不确定我如何能够创建太多私人仓库,但是如果我的计划包括5个私人仓库,而我却有6个,那么这就是我将收到的错误:

denied: requested access to the resource is denied

在我的情况下,由于我的默认可见性设置为private:我可能会拥有过多的私有存储库:

Default Visibility

在这里您可以确定可以拥有多少个私人仓库:

Billing Plans

一旦我将有问题的回购公之于众,问题就显而易见了:

Make Repository Private 5 of 5

答案 22 :(得分:1)

不允许误导标签名称。
解决这个问题的方法:

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 

输出:

拒绝:请求的对资源的访问被拒绝


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

误导是Tag,请确保您理解。

答案 23 :(得分:1)

最简单的方法是使用docker桌面(适用于Windows 10或更高版本以及Mac)

通过提供dockerID首次注册到docker hub

然后单击计算机中的docker桌面图标,然后单击->首选项->,然后使用docker hub docker / id和密码登录。

enter image description here

答案 24 :(得分:1)

当您已经使用其他帐户登录时,有时可能会遇到此问题。在这些情况下,您必须:

docker logout

然后

docker login  

答案 25 :(得分:1)

我也遇到了这个错误信息,使用 Gitlab 注册表。不同之处在于我试图从以前的版本中更改图像的名称。那里的问题是被推送图像的注册表不存在,因为图像的新名称与我组中的任何项目都不匹配。

TLDR:在 Gitlab 中,图像名称必须与项目名称匹配。

答案 26 :(得分:1)

这可能是 DigitalOceans Container Registry 特有的,但也许有帮助:

在我的例子中,我的管道在 val fields = new SchemaRefiner(schema,requiredFields) val newSchema = fields.getRefinedSchema 之后触发清理作业 (doctl registry garbage-collection start),这将注册表置于只读模式(请参阅 doc)。因此,清理作业处于活动状态时的下一次推送将获得 docker push

如果 denied: requested access to the resource is denied 返回 404,则作业已完成,doctl registry garbage-collection get-active 将成功完成。

答案 27 :(得分:1)

如果在docker login之后仍然失败,请确保首先创建您尝试推送的存储库。

答案 28 :(得分:1)

我也有这个问题。事实证明我正在使用免费套餐并尝试在私有存储库中推送超过1个图像。将1张图片设为私有,其余公众为我工作。

答案 29 :(得分:1)

就我而言,我被推到一个团队中,该团队所在的团队对存储库具有管理员权限。

所以我的推命令是: df3.select( "*", f.when( (f.size("numbers") % 2) == 0, f.lit(True) ).otherwise(f.lit(False)).alias("isEven"), f.floor(f.size("numbers")/2).alias("middle") ).select( "id", "Date", "middle", f.posexplode("numbers") ).where( "(isEven=False AND middle=pos) OR (isEven=True AND pos BETWEEN middle-1 AND middle)" ).groupby("id", "Date").agg(f.avg("col").alias("median")).show() #+-------+----------+------+ #| id| Date|median| #+-------+----------+------+ #|group 1|2017-03-02| 98.0| #|group 1|2017-04-01| 98.0| #|group 1|2018-03-02| 74.0| #|group 2|2016-03-01| 49.0| #|group 2|2016-12-22| 49.0| #|group 2|2017-12-31| 65.0| #|group 2|2018-08-08| 81.0| #|group 2|2018-09-25| 65.0| #|group 3|2017-01-01| 75.0| #|group 3|2018-12-12| 75.0| #+-------+----------+------+

我可以成功推送到用户名/图像名称,但不能推送到组织。我三重检查了权限。什么都没用。

解决方案是从docker hub删除存储库,然后使用以下命令再次推送新的存储库: from CAI import RSCU RSCU("GATACAGTAGAC")

出于其价值,我认为回购最初是在帐户转换为组织之前进行的。

答案 30 :(得分:0)

推送所有标签

使用 -a 推送。英石。 docker push username/image -a

访问被拒绝可能是由于 docker 存储库权限未公开(您可以仔细检查)

你需要拉一下看看是否正常。

在 hub.docker.com 中查看

成功推送后打开“标签”查看所有可用标签

答案 31 :(得分:0)

我真的希望这对某人(谁像我自己一样首先寻找最终答案)有所帮助:

我不断尝试输入

docker push user/repo/tag

相反

docker push user/repo:tag

由于我也这样制作了标签:

docker tag image user/repo/tag

...所有地狱都输了。

我衷心希望您不要重蹈覆辙。我在这上浪费了大约30分钟...

答案 32 :(得分:0)

我遇到了类似的问题,我通过创建一个具有相同图像名称的存储库然后将其推送到 docker 来解决它,它起作用了

答案 33 :(得分:0)

将您的图片重命名为username / image-name  docker tag your-current-image / current-image dockerhub-username / some-name:your-tag(例如:latest)

答案 34 :(得分:0)

尝试退出“Docker for Windows”应用程序并退出https://hub.docker.com/网站,然后执行“docker login”和“docker push”。 这对我有帮助。

答案 35 :(得分:0)

从命令提示符登录的docker无法正常工作。我一直得到&#34;请求访问资源被拒绝&#34;在试图推动时。

登录到docker本身的docker后,docker push工作得很好。希望这有助于某人。

答案 36 :(得分:0)

我遇到了同样的错误。不幸的是,该错误是由于在docker push之前使用 sudo 造成的。另外,您可能需要从dockerhub中删除存储库,因为可以存储的存储库数量有限。并且,请尝试docker logout,然后尝试docker login

答案 37 :(得分:0)

我有同样的问题。就我而言,我登录了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

致谢。

答案 38 :(得分:0)

在泊坞登录后,您需要使用前缀命名您的图像。

e.g。如果您在docker-hub中的用户名为Shah,则图片应为:

Shah/firstimage

答案 39 :(得分:0)

尝试每种高分解决方案后,我仍然没有运气。

直到我将焦点和搜索关键字更改为包括我的凭据帮助程序-通过之后,

如果这是与您类似的情况(使用任何种类的docker-credential-helpers,并且仅遵循一般性的设置指南),请尝试查看这些步骤,看看是否有任何遗漏。

例如,我将 pass 用作docker的凭据,这是为专用 pass-name docker-credential-helpers/docker-pass-initialized-check插入dockerhub帐户密码的步骤当我只跟踪顶部搜索结果以设置 pass 时就错过了。

发出以下命令后,docker push终于对我表示了怜悯。

pass insert docker-credential-helpers/docker-pass-initialized-check

有关更多详细信息,请参见this answer

答案 40 :(得分:0)

如果有其他人碰到这个 - 在我的情况下,原因是我使用(不赞成的)docker compose方法来推送图像。切换到预期的docker push可以解决我的问题。

答案 41 :(得分:0)

另一个(很聪明)的原因:您的计划没有私人仓库。

答案 42 :(得分:0)

我知道这个问题已经有很多答案,但是没有一个对我有帮助。

我观察到的是构建映像的速度非常快,并将其推送到docker.io会导致错误:

denied: requested access to the resource is denied

我还注意到做

docker image ls

透露我的图片的最新版本是几天前的。

我不得不做一个

docker container prune 

摆脱停止的容器和

docker images prune -a

摆脱旧图像。 这样我就可以成功构建并推送图像了。

“拒绝:请求对资源的访问被拒绝”不是来自docker.io,而是来自本地docker。有趣的是,它在构建过程中没有失败。

答案 43 :(得分:0)

~/.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***"
}
***

答案 44 :(得分:0)

我在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

答案 45 :(得分:0)

Docker中心计划对名称空间可以使用的私有存储库的数量有所限制。例如,免费计划仅允许您在任何时间使用一个私有存储库来建立帐户。

如果您处于计划限制内,那么您的推送将成功。否则,将创建带有适当标签的空存储库,但不会推送图像本身。

就我而言,我在推送图像之前使用Web控制台将存储库创建为公开。

答案 46 :(得分:0)

TL; DR docker login在macOS上不适合我,但是从应用程序进行的docker登录有效

直接在终端上使用时,命令docker login成功询问我的凭据,并且在我正确输入它们后(记住没有电子邮件,只有docker ID起作用),它宣布了login succeeded,但有任何请求推送将以denied: requested access to the resource is denied

结尾

但是,当我从正在运行的macOs docker应用程序登录时(从工具栏上的图标访问),它可以正常工作。因此,docker login和正在运行的docker app / daemon之间可能存在一些不一致之处

答案 47 :(得分:0)

我是从Azure DevOps收到上述相同消息的。

在我的情况下,我不仅使用docker-compose,而且使用docker-compose,并使用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发挥作用。

答案 48 :(得分:0)

我在git上的问题是项目权限配置。 我已通过在设置->常规->可见性,项目功能,权限中启用“容器注册表”来修复它,并为我的项目(link)启用了容器注册表:

enter image description here

答案 49 :(得分:0)

在我的情况下,sudo -E失败,并显示此消息。解决方法是不使用sudo提供对docker的访问权限(创建一个组docker,将(Jenkins)用户添加到该组,在/var/run/docker.sock上设置该组)。现在docker push不需要sudo,它可以工作。

答案 50 :(得分:0)

所以,如果它对任何人都有帮助...
我遇到了同样的问题,这就是我的问题和FIX。

  • 我在测试网络上有一台名为“ galaxy”的计算机。
  • 我使用以下运行命令设置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
    

    然后我试图将图像从网络上的笔记本电脑推送到银河,所以我这样做了:

    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
    

    因此由于某种原因,我不得不在标记中包括端口,作为存储库名称的必需部分。



    希望这对其他人有帮助。

  • 答案 51 :(得分:0)

    以前的所有答案都是正确的,我只想添加一条我未提及的信息;

    如果该项目是要正确推送图像的私有项目,则必须配置一个个人访问令牌或在启用read_registry密钥的情况下部署令牌。

    来源:https://gitlab.com/help/user/project/container_registry#using-with-private-projects

    希望这会有所帮助(如果问题已经发布到现在为止)

    答案 52 :(得分:-1)

    我在ibmcloud中遇到了相同的错误。我添加了名称空间,然后尝试推送我的图像,它解决了该问题。

    ibmcloud cr namespace-add txts
    
    相关问题