Binfmt
Cross-platform emulator collection distributed with Docker images.
Install / Use
/learn @tonistiigi/BinfmtREADME
Binfmt
Cross-platform emulator collection distributed with Docker images.
Build local binaries
docker buildx bake
This builds the qemu-user emulator binaries for your local plaform to the bin directory.
Build test image
REPO=myuser/binfmt docker buildx bake --load mainline
docker run --privileged --rm myuser/binfmt
Prints similar to:
{
"supported": [
"linux/amd64",
"linux/arm64",
"linux/riscv64",
"linux/ppc64le",
"linux/s390x",
"linux/386",
"linux/arm/v7",
"linux/arm/v6"
],
"emulators": [
"qemu-aarch64",
"qemu-arm",
"qemu-i386",
"qemu-ppc64le",
"qemu-riscv64",
"qemu-s390x"
]
}
Installing emulators
docker run --privileged --rm tonistiigi/binfmt --install all
docker run --privileged --rm tonistiigi/binfmt --install arm64,riscv64,arm
Installing emulators from Docker-Compose
version: "3"
services:
emulator:
image: tonistiigi/binfmt
container_name: emulator
privileged: true
command: --install all
network_mode: bridge
restart: "no"
Only use container restart-policy as no, otherwise docker will keep restarting the container.
Uninstalling emulators
docker run --privileged --rm tonistiigi/binfmt --uninstall qemu-aarch64
Emulator names can be found from the status output.
You can also uninstall all archs for a specific emulator:
docker run --privileged --rm tonistiigi/binfmt --uninstall qemu-*
Display version
docker run --privileged --rm tonistiigi/binfmt --version
binfmt/9a44d27 qemu/v6.0.0 go/1.15.11
Development commands
# validate linter
./hack/lint
# validate vendored files
./hack/validate-vendor
# update vendored files
./hack/update-vendor
# test, only run on nodes where you allow emulators to be installed in kernel
./hack/install-and-test
Test current emulation support
docker run --rm --platform linux/arm64 alpine uname -a
docker run --rm --platform linux/arm/v7 alpine uname -a
docker run --rm --platform linux/ppc64le alpine uname -a
docker run --rm --platform linux/s390x alpine uname -a
docker run --rm --platform linux/riscv64 alpine uname -a
buildkit target
This repository also provides helper for BuildKit's automatic emulation support https://github.com/moby/buildkit/pull/1528.
These binaries are BuildKit specific and should not be installed in kernel with binfmt_misc.
Licenses
MIT. See LICENSE for more details.
For QEMU see https://wiki.qemu.org/License
Related Skills
node-connect
349.9kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
prose
349.9kOpenProse VM skill pack. Activate on any `prose` command, .prose files, or OpenProse mentions; orchestrates multi-agent workflows.
frontend-design
109.8kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
349.9kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
