4

我正在尝试为我的 docker hub 存储库创建一个清单,以便我拥有一个多平台图像。

我的程序如下:

  1. 我首先创建了一个空存储库并将两个图像推送到其中,一个用于 amd64,一个用于 arm64。这些图像可以在这里预览:https ://hub.docker.com/repository/docker/shadash/docker-multiarch-glusterfs-plugin
  2. 我使用 CLI 登录到我的 docker hub 帐户。我尝试了以下方法,响应是“登录成功”:
docker login --username=shadash
docker login docker.io --username=shadash
docker login https://index.docker.io/v1 --username=shadash
docker login
  1. 我尝试创建一个清单:
docker manifest create shadash/docker-multiarch-glusterfs-plugin:latest shadash/docker-multiarch-glusterfs-plugin:x86_64 shadash/docker-multiarch-glusterfs-plugin:aarch64

结果是:

错误:拒绝:请求的资源访问被拒绝未经授权:需要身份验证

  1. 我尝试使用清单工具(https://github.com/estesp/manifest-tool
git clone https://github.com/estesp/manifest-tool
cd manifest-tool
make
./manifest-tool push from-spec someimage.yaml

someimage.yaml:

image: shadash/docker-multiarch-glusterfs-plugin:latest
manifests:
  - image: shadash/docker-multiarch-glusterfs-plugin:x86_64
    platform:
      architecture: amd64
      os: linux
  - image: shadash/docker-multiarch-glusterfs-plugin:aarch64
    platform:
      architecture: arm64
      os: linux

结果:

FATA [0001] 检查图像“shadash/docker-multiarch-glusterfs-plugin:x86_64”失败并出现错误:错误:拒绝:请求的资源访问被拒绝未经授权:需要身份验证

因此,问题似乎与我现有图像的检查有关。但是,我可以很好地下载和安装这些插件(在 3 台不同的机器上测试),并且当我启动使用此卷驱动程序的堆栈时它们也可以工作:

docker plugin install shadash/docker-multiarch-glusterfs-plugin:x86_64
docker plugin install shadash/docker-multiarch-glusterfs-plugin:aarch64

我真的被困在这里,我不知道为什么我不能根据这些图像创建清单图像。我已成功为 jenkins 创建了清单映像,请参阅https://hub.docker.com/repository/docker/shadash/docker-multiarch-jenkins

4

1 回答 1

0

This can happen if the images you're referencing haven't been pushed.

For example, if either shadash/docker-multiarch-glusterfs-plugin:x86_64 or shadash/docker-multiarch-glusterfs-plugin:aarch64 from your example in step 3 haven't been pushed, then you'll get this error message.

The solution is to push the images before running docker manifest create.

于 2021-08-01T05:57:44.293 回答