v0.12.0 · Podman API v5 · 14.5MB

Container engine
for Android

Run Docker containers on your phone. One binary, zero dependencies, no root required.

8.56MB
Binary size
12MB
Memory idle
<15ms
Cold start
0
Dependencies

Features

Everything Docker has.
Without the overhead.

Docker cannot run on Android. Doki can. Same OCI images, same workflow, fraction of the resources.

Zero Dependencies

Single static binary. No containerd, no runc, no libseccomp, no systemd. Just copy and run. Ships everything you need in one ~8.5MB executable.

OCI + Podman API v5

Full Docker Hub support. 39 Podman API v5 endpoints. Same API as Docker Engine v1.55. Your docker-compose files work out of the box.

Kubernetes 1.32

6 components: API Server, Kubelet, Scheduler, 10 Controllers, Kube-proxy, CoreDNS. 80 K8s API types. Full kubectl client.

6 Binaries, 14.5MB

doki, dokid, doki-compose, doki-init, doki-kube, doki-kubectl. All in one package. ARM64, ARMv7, macOS native.

macOS Native VZ

Apple Virtualization.framework for macOS 11+. QEMU fallback for Intel Macs. Sandbox backend for lightweight isolation.

DokiLink Mesh

Peer-to-peer container networking. mDNS auto-discovery. Encrypted with TLS 1.3 + secretbox. Zero config.

Landlock Sandbox

Linux 5.13+ ABI v9 support. Filesystem, network, scope rules. Auto-detection with fallback. Secure by default.

100% Rootless

Runs as unprivileged user on Android. No root, no namespace tricks. Just works.

How it works

Pull, build, run.
Done.

Download one binary, pull any OCI image, run containers in seconds.

Try it

See it in action.

Pull an image, run a container, map a port. All in a few seconds.

doki — zsh
$ curl -sL dok1.xyz | bash
==> Installing Doki CLI
==> Detected platform: Android/Termux (ARM64)
==> Version: v0.11.0
==> Downloading binaries...
✓ Doki v0.11.0 installed successfully.

Built with

Go, C, and a little ObjC.

55,000+ lines of Go. 16,000 lines of C. 1,000 lines of Objective-C for the macOS VZ backend.

Go38,000 lines
C16,000 lines
ObjC1,000 lines
Go
Go
C
C
Ob
ObjC

Performance

Doki vs the rest.

Docker cannot run on Android. Doki was built for it from the ground up.

MetricDokiDockerPodman
Binary size8.56 MB58 MB45 MB
Memory (idle)12 MB85 MB60 MB
Cold start<15ms~50ms~30ms
Root requiredNoYesNo
Android nativeYesNoNo
OCI registryYesYesYes
ComposeYesYesYes
Podman API v539 endpointsN/A184 endpoints
Kubernetes 1.326 componentsNoNo
Landlock sandboxABI v9NoNo

Benchmarks measured on Pixel 8 (Android 14). Docker measured on Ubuntu 24.04 (x86_64). Your mileage may vary.

v0.12.0

Mesh. Kubernetes.
macOS native.

Everything you need to run containers anywhere.

Distributed Container Mesh

Peer-to-peer container networking with NAT traversal (STUN/TURN), Kademlia DHT for decentralized peer discovery, and mDNS auto-discovery. Encrypted with TLS 1.3 and secretbox payload encryption.

NAT Traversal
STUN/TURN
DHT
Kademlia
Encryption
TLS 1.3
Replay Guard
Nonce+Timestamp

Note: Peers can connect across NAT boundaries without static config.

DokiLink mesh
$ doki link add peer.local
Discovering peer via DHT/mDNS...
NAT traversal: STUN binding...
Establishing encrypted channel (TLS 1.3)...
✓ Peer connected. Mesh: 2 nodes
$ doki mesh status
Peers: 2 (DHT: 8 nodes known)
peer.local [connected] latency: 3ms
phone-2 [connected] latency: 12ms

Community

What developers are saying.

Click on a node to read a comment

Run containers on your phone.

One binary. Zero dependencies. No root.

$curl -sL dok1.xyz | bash