src/experimental/multi_arch/README.md
Install the tools
sudo apt install binutils-aarch64-linux-gnu g++-12-aarch64-linux-gnu gcc-12-aarch64-linux-gnu
sudo apt install qemu-user qemu-user-static
Proof of concept
aarch64-linux-gnu-g++-12 -static -o aarch64_hello hello.cc
qemu-aarch64 ./aarch64_hello
Setup docker buildx
wget https://github.com/docker/buildx/releases/download/v0.10.0/buildx-v0.10.0.linux-amd64
mkdir -p ~/.docker/cli-plugins/
mv buildx-v0.10.0.linux-amd64 ~/.docker/cli-plugins/docker-buildx
chmod +x ~/.docker/cli-plugins/docker-buildx
docker run --privileged --rm tonistiigi/binfmt --install all
docker buildx create --name mybuilder --driver docker-container --bootstrap
docker buildx use mybuilder
Build
docker buildx build --platform linux/amd64,linux/arm64 .
Push
docker buildx build --platform linux/amd64,linux/arm64 -t gcr.io/pl-dev-infra/multi-arch-hello:latest --push .
Inspect
docker buildx imagetools inspect gcr.io/pl-dev-infra/multi-arch-hello:latest
Test on k8s
gcloud container clusters get-credentials multi-arch --zone us-central1-a --project pl-pixies
kubectl create ns hello
kubectl apply -f hello.yaml