Docker 514 's apt repository installs six packages (Official Apt Repository), and only some of them are Docker's own code:
| Component | Package | Project, license | Replaceable by |
|---|---|---|---|
| docker CLI | docker-ce-cli | docker/cli, Apache 2.0 | Podman 47,580 , nerdctl 10,397 |
| dockerd | docker-ce | moby/moby, Apache 2.0 | Podman, CRI-O 669,542 |
| BuildKit 10,294 , Buildx 4,514 | docker-buildx-plugin | moby/buildkit, Apache 2.0 | Buildah 919,369 |
| Compose 514 | docker-compose-plugin | docker/compose, Apache 2.0 | podman-compose 6,226 |
| containerd 234,762 , shim | containerd.io | CNCF, Apache 2.0 | CRI-O |
| runc 13,463 | containerd.io | OCI, Apache 2.0 | crun 4,136 , youki, gVisor 482,968 |
Docker's own code is the developer experience: the CLI, dockerd's networking, volumes and API, Compose, and the BuildKit front ends. Everything from containerd down is shared infrastructure that Kubernetes 5,150 , cloud providers and the Podman ecosystem use too, packaged here as containerd.io with runc inside. That split is why Kubernetes's Kubernetes cluster runs BookNest's image with no Docker installed, and why crun, a runc alternative written in C, can be registered in daemon.json and chosen with docker run --runtime without rebuilding an image.