いつのまにかビルド時にランタイム時のターゲットプラットフォームを選択できるようになっていた
昨今は ARM 系(graviton) の EC2 を使用することが多いので、これは助かります。:-)
➜ cat Dockerfile # syntax=docker/dockerfile:1 FROM alpine:3.16 RUN apk add curl ➜ docker buildx build --platform linux/amd64 -t sample:amd64 . (... snip ...) ➜ docker buildx build --platform linux/arm64 -t sample:arm64 . (... snip ...) ➜ docker images | rg sample sample arm64 92ff9bc76d35 6 minutes ago 9.88MB sample amd64 66864ae4d60a 7 minutes ago 10.2MB ➜ docker inspect 66864ae4d60a --format='{{.Os}}/{{.Architecture}}' linux/amd64 ➜ docker inspect 92ff9bc76d35 --format='{{.Os}}/{{.Architecture}}' linux/arm64
➜ docker buildx ls NAME/NODE DRIVER/ENDPOINT STATUS BUILDKIT PLATFORMS default * docker default default running 20.10.24 linux/amd64, linux/arm64, linux/riscv64, linux/ppc64le, linux/s390x, linux/386, linux/arm/v7, linux/arm/v6 desktop-linux docker desktop-linux desktop-linux running 20.10.24 linux/amd64, linux/arm64, linux/riscv64, linux/ppc64le, linux/s390x, linux/386, linux/arm/v7, linux/arm/v6
macOS Ventura へ homebrew 経由で docker desktop for Mac をインストールする場合は順番に注意
macOS Ventura 13.3.1 での docker desktop for Mac は 1. cask 経由で GUI などのコンポーネントを先行してインストールしてから 2. コマンドツールの docker をインストールする必要があります。
➜ brew install --cask docker ➜ brew install docker ➜ brew install docker-buildx ➜ rm '/opt/homebrew/etc/bash_completion.d/docker' ➜ brew link --overwrite docker ➜ docker --version Docker version 20.10.24, build 297e128
cask を先行させずコマンドラインツールの docker を先にインストールすると 23.0.0 がインストールされてしまいます。その場合 docker image build 時に以下のようなメッセージで docker-buildx のインストールを要求されます。将来的には docker-buildx は必須のコンポーネントになってくるようです。
DEPRECATED: The legacy builder is deprecated and will be removed in a future release. Install the buildx component to build images with BuildKit: https://docs.docker.com/go/buildx/