The typical docker container stack known to me is docker(client) -> dockerd -> containerd -> runC. Then you also hear about libcontainer. I am wondering where libcontainer fits in the above stack and what is it role/purpose.
What had started at github.com/docker/libcontainer
now seems to continue at github.com/opencontainers/runc/tree/master/libcontainer
which means that we now have: docker → containerd → runc → libcontainer
Parts from: A history of low-level Linux container runtimes follow.
At the beginning:
...the upstream Docker developers, including some members of my Red Hat team, decided they wanted a golang-native way to launch containers, rather than launching a separate application. Work began on
libcontainer, as a native golang library for launching containers...
and after the Open Container Initiative (OCI) was formed:
...The
libcontainerparts of Docker were broken out and donated to the OCI. The upstream Docker engineers and our engineers helped create a new frontend tool to read the OCI Runtime Specification JSON file and interact withlibcontainerto run the container. This tool, calledrunc, was also donated to the OCI.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With