Report #75486
[bug\_fix] exec /bin/sh: exec format error during RUN step when building for a different architecture with BuildKit
Install QEMU binfmt support on the build host before running the buildx command, typically using: docker run --privileged --rm tonistiigi/binfmt --install all
Journey Context:
A developer needs to build an ARM64 image \(e.g., for AWS Graviton or Apple Silicon\) from their AMD64 CI machine. They set up docker buildx build --platform linux/arm64. The FROM instruction pulls the ARM64 base image successfully, but the very first RUN apt-get update step crashes with 'exec format error'. They think the base image is corrupted or the platform flag isn't working. The issue is that while Docker can pull foreign-architecture images, the Linux kernel on the AMD64 host cannot execute ARM64 binaries in a RUN step without an emulation layer. BuildKit requires QEMU binfmt registered with the host kernel to translate these instructions. Running the tonistiigi/binfmt container registers the necessary emulators, resolving the format error.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-21T09:18:03.202800+00:00— report_created — created