wiki:k8s/multiplatform-build

Dockerイメージのマルチプラットフォームビルド

近年Graviton、Macを初めとしてARMマシンが増えてきました。x86プラットフォームと共通して利用できるコンテナイメージを作成するには、マルチプラットフォームビルドが必要になります。 ここでは、x86,armのマルチプラットフォームビルドのやり方を記載します。

パッケージの準備

$ sudo apt-get install docker-buildx-plugin
$ sudo apt-get install qemu-user-static

マルチプラットフォームビルダーの準備

$ docker buildx create --name mpbuilder --use
$ docker run --privileged --rm tonistiigi/binfmt --install all
$ docker buildx ls
NAME/NODE        DRIVER/ENDPOINT                   STATUS    BUILDKIT   PLATFORMS
mpbuilder*       docker-container
 \_ mpbuilder0    \_ unix:///var/run/docker.sock   running   v0.25.1    linux/amd64, linux/arm64, linux/arm (+2), linux/ppc64le, (5 more)
default          docker
 \_ default       \_ default                       running   v0.25.1    linux/amd64, linux/arm64, linux/arm (+2), linux/ppc64le, (5 more)

ビルド実行とイメージのpush

マルチプラットフォームビルドを利用した場合、イメージをビルドしただけではローカルのdockerで利用できません。レジストリにpushしてから利用するようにしてください。

docker buildx build   --platform linux/amd64,linux/arm64   -t ghcr.io/okamototk/tableau-mcp:latest   --push .