0

我想要做什么

当通过 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 守护进程。

我在邮递员中使用的标题 在此处输入图像描述

4

1 回答 1

0

我必须弄清楚。问题出在我们作为 X-Registry-Auth 标头传递的 base64 编码字符串中。我错过了 json 中的“serveraddress”属性

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

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

于 2021-03-26T09:03:03.460 回答