Как установить архитектуру при построении изображения multi-arch Docker? - PullRequest
0 голосов
/ 12 февраля 2020

Допустим, у меня есть приложение foo, созданное для множества различных арок (например, foo-arm64, foo-amd64, et c). Я хотел бы сделать очень маленькие 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 Ответ

0 голосов
/ 19 марта 2020

Используйте команду docker buildx вместо команды docker build -t . Docker построить только создать docker образ с соответствующей платформой.

Для получения дополнительной информации см. Документацию: https://www.docker.com/blog/multi-arch-images/

...