微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 HTTP 公开 API 时 Docker 拉取失败

如何解决使用 HTTP 公开 API 时 Docker 拉取失败

我想做什么

当通过 http 使用公开的守护进程时,我需要能够拉取存储在 Docker 集线器中的私有镜像

http://127.0.0.1:2375/v1.35/images/create?fromImage=akkovachev/test-repository

“akkovachev/test-repository”是 docker hub 中的一个私有仓库,当我运行上面的 POST 请求时,我得到

{
    "message": "pull access denied for akkovachev/test-repository,repository does not exist or may require 'docker login': denied: requested access to the resource is denied"
}

所以可能我遗漏了一些东西,但我不明白是什么。我试图做的是使用 base64 编码的 uname:password 在文件中更改身份验证

./docker/config.json

我也尝试了此处描述的格式的 base64 编码标头 https://docs.docker.com/engine/api/v1.35/#section/Authentication 但同样的问题。我在这里发帖是我最后的手段,因为我无法很好地解释为什么会发生这种情况。许多人说他们面临同样的问题,但主要是在 CLI 中。我在 Windows 上使用 Docker 版本 v20.10.5。

请务必注意,仅当我尝试通过暴露的 HTTP 恶魔执行此操作时才会出现此问题。当我在 CLI 中执行时它工作正常

docker pull akkovachev/test-repository

Evertyghing 按预期工作,图像被正确拉取

我需要能够通过 API,因为我有自己的 Rest api 构建,我需要能够通过暴露的 docker 守护进程。

我在 Postman 中使用的标题

enter image description here

解决方法

我很想弄清楚。问题出在我们作为 X-Registry-Auth 标头传递的 base64 编码字符串中。我在 json 中缺少“serveraddress”属性

{
  "username": "string","password": "string","email": "string","serveraddress": "string"
}

我添加并指向 https://index.docker.io/v1/ 然后它工作得很好

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?