有没有办法使用 docker manifest-list 在 ECR 中构建多架构镜像?

Is there a way to use docker manifest-list to build multi-arch images in ECR?

我正在尝试使用 Amazon ECR 来存储我的图像。

现在,我希望我的 image:tag 能够使用不同的操作系统和架构,例如 linux/amd64、linux/arm64、windows 等

当我使用 docker 时这很好,但似乎我无法使其与 ECR 一起使用。

Docker 表示您可以将其推送到不安全的注册表:
https://docs.docker.com/engine/reference/commandline/manifest/

命令失败:

docker buildx build --platform linux/amd64,linux/arm64 -t 5XXXXXXXXXX.dkr.ecr.ap-southeast-2.amazonaws.com/imagename:tag --push .

此命令成功:

docker buildx build --platform linux/arm64 -t 5XXXXXXXXXX.dkr.ecr.ap-southeast-2.amazonaws.com/imagename:tag --push .

多平台镜像可以推送到Docker Hub。


我想知道我们如何做到这一点。这是我的想法。如有不妥请指正

我们能否创建自己的清单文件,其中包含已放置在 ECR 存储库中的图像?

类似于:

image: image:multi-arch
manifests:
   -
      image: 5XXXXXXXXXX.dkr.ecr.ap-southeast-2.amazonaws.com/imagename:tag/i1-linuxamd64
      platform:
             architecture: arm64
      os: linux

   -
      image: 5XXXXXXXXXX.dkr.ecr.ap-southeast-2.amazonaws.com/imagename:tag/i2-intelx86
      platform:
             architecture: intelx86
      os: Windows

现在我们有了一个名为 image:multi-arch 的新图像。然后我们使用这个图像并期望它根据清单自动获取目标架构。

如果我将这个最终图像推送到 ECR,它会起作用吗? 难道我做错了什么?请随时指正。

ECR 目前不支持多架构镜像。您可以按照 this issue 上的 AWS 容器路线图进行更新。

推送多架构镜像:现已可用

https://docs.aws.amazon.com/AmazonECR/latest/userguide/docker-push-multi-architecture-image.html