This guide is for running docker2vm on Linux hosts.
docker2vm includes a pinned Gondolin runtime dependency (@earendil-works/gondolin@0.2.1) to resolve guest assets during conversion.
Install tools using their official docs/download pages:
- Bun: https://bun.com/
- QEMU: https://www.qemu.org/download/
- e2fsprogs: https://e2fsprogs.sourceforge.net/
If you want Dockerfile conversion (dockerfile2gondolin), also install Docker + Buildx:
docker2vm is tested with @earendil-works/gondolin@0.2.1 and can fetch guest assets automatically during conversion.
Use Gondolin CLI install docs:
- https://earendil-works.github.io/gondolin/cli/
- Package page: https://www.npmjs.com/package/@earendil-works/gondolin
bun --version
qemu-system-x86_64 --version
mke2fs -V
debugfs -V
gondolin --help >/dev/nullbun run test
bun run typecheck
bun run buildUse a platform that matches the architecture you will run in Gondolin.
uname -m=>x86_64oramd64: uselinux/amd64uname -m=>aarch64orarm64: uselinux/arm64
oci2gondolin defaults automatically from host arch if --platform is omitted, but passing it explicitly is recommended.
Example:
bun run oci2gondolin -- \
--image busybox:latest \
--platform linux/amd64 \
--mode assets \
--out ./out/busybox-assetsamd64 host:
INTEGRATION_PLATFORM=linux/amd64 bun run test:integration
PLATFORM=linux/amd64 bun run e2e:smokearm64 host:
INTEGRATION_PLATFORM=linux/arm64 bun run test:integration
PLATFORM=linux/arm64 bun run e2e:smoke- If
/dev/kvmis available, QEMU can use hardware acceleration. - If
/dev/kvmis unavailable (common in CI), the project falls back to TCG emulation (slower but functional).
Confirm QEMU is installed and that you are using a platform that matches your host and assets.
Reinstall e2fsprogs and verify the commands are available in your shell.