как установить архитектуру при создании многоархивного образа Docker?
Допустим, у меня есть приложение foo
построен для множества различных арок (например, foo-arm64
, foo-amd64
, так далее). Я хотел бы сделать очень маленькие образы Docker вот так:
FROM scratch
ARG ARCH
ADD foo-$ARCH /bin/foo
ENTRYPOINT [ "/bin/foo" ]
Однако когда я создаю образ:
docker build -t foo:arm64 --platform linux/arm64 --build-arg ARCH=arm64 .
архитектура неправильная:
docker inspect foo:arm64 | grep Arch
"Architecture": "amd64", # should be arm64??
Кажется, что арка изображения всегда исходит от хоста. Как я могу создать образ Docker с правильной архитектурой, если он отличается от хоста? Как это делают официальные образы Docker?
1 ответ
Используйте команду docker buildx вместо команды docker build -t. Сборка Docker создает только образ докера с соответствующей платформой.
Для получения дополнительной информации см. Документацию: https://www.docker.com/blog/multi-arch-images/