Сборка контейнеров Docker под несколько платформ
Сборка Docker контейнера под разные платформы
1) Добавьте в конфиг строчку ~/.docker/config.json
"experimental": "enabled"
2) Установите QEMU
apt-get update
apt-get install -y qemu qemu-user-static binfmt-support
update-binfmts --enable qemu-arm
update-binfmts --display qemu-arm
3) Зарегистрируйте QEMU
docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
4) Создайте простой Dockerfile
ARG ARCH=
FROM ${ARCH}alpine:3.11
RUN cd ~; \
echo "" > /etc/apk/repositories; \
echo "https://mirror.yandex.ru/mirrors/alpine/v3.11/main" >> /etc/apk/repositories; \
echo "https://mirror.yandex.ru/mirrors/alpine/v3.11/community" >> /etc/apk/repositories; \
apk update; \
apk add bash nano mc wget grep; \
rm -rf /var/cache/apk/*; \
echo "export EDITOR=nano" > /etc/profile.d/editor_nano; \
echo "Ok"
5) Соберите контейнер. Вместо user должно стоять ваш репозиторий
docker build ./ -t user/alpine_test:7.3-amd64 --file Dockerfile --build-arg ARCH=amd64/
docker build ./ -t user/alpine_test:7.3-arm32v7 --file Dockerfile --build-arg ARCH=arm32v7/
docker push user/alpine_test:7.3-amd64
docker push user/alpine_test:7.3-arm32v7
6) Создайте манифест
docker manifest create user/alpine_test:7.3 \
--amend user/alpine_test:7.3-amd64 \
--amend user/alpine_test:7.3-arm32v7
docker manifest push user/alpine_test:7.3