3 ms·
...and it was probably around 1.5K lines early in its life. But that misses the point. This is very helpful for understanding how a Docker-like system works si
by donio 6y ago
...and it was probably around 1.5K lines early in its life.
But that misses the point. This is very helpful for understanding how a Docker-like system works since it's a small and mostly self-contained implementation. You can read through the entire thing and fully understand it.
It only cheats in the container registry handling where it pulls in github.com/google/go-containerregistry and for the network setup where it uses github.com/vishvananda/netlink. The rest is done in terms of Go stdlib and syscalls.
Early Docker used external utilities (lxc, iptables) and had the client/server stuff already so it's not as straightforward.
- shuss 6y agoYep. Docker is famously written Go. The only reason I wrote this is as an educational tool to discuss how containers under Linux really work. It’s self-contained (pun unintended) except for the usage of the go-containerregistry package, which anyway does stuff unrelated to how containers are managed on Linux.