Есть ли способ использовать docker manifest-list для создания мультиархитектурных образов в ECR?
Я пытаюсь использовать Amazon ECR для хранения своих изображений.
Теперь я хочу, чтобы мой тег image: работал с разными операционными системами и архитектурами, такими как linux/amd64, linux/arm64, windows и т. Д.
Это нормально, когда я использую докер, но, похоже, я не могу заставить его работать с ECR.
Докер говорит, что вы можете отправить его в небезопасный реестр:
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, оно будет работать? Я делаю что-то неправильно? Пожалуйста, поправьте меня.
2 ответа
ECR в настоящее время не поддерживает многоархитектурные образы. Вы можете следить за этой проблемой в дорожной карте AWS Containers для получения обновлений.
Распространение мультиархитектурного образа: теперь доступно
https://docs.aws.amazon.com/AmazonECR/latest/userguide/docker-push-multi-architecture-image.html