Welcome to the Linux Foundation Forum!

Chapter 4 - Docker Related Questions

Docker, as a complex container runtime system, has a lot of components. Many runtime daemons were mentioned in chapter4, but it's not clear how they are related.

I have the following questions and want to confirm my understanding

  • It mentioned docker used to use lxc as the backend runtime, but it has limitations. What are the limitations of lxc so that docker has to develop its own in-house runtime?
  • Many runtime daemons were mentioned, can I confirm their relations as the following?

    1. libcontainer replaces lxc for the legacy docker runtime, and it only implements the OCI runtime specification, not the image format specification.
    2. libcontainer is a component for both runc and docker runtimes. It's NOT the case that docker uses runc as its backend.
    3. containerd is another docker runtime component. It implements the OCI image format specification.
    4. dockerd is another docker runtime component. It implements the OCI distribution specification by interacting with the docker clients and the docker registry to manage container life cycles, configurations, and images.
  • If my understanding of these daemons are correct, what are the relationships among libcontainer, containerd, and dockerd? Is libcontainer a runtime library used by containerd and dockerd? Are containerd and dockerd separate daemon processes work together as part of the docker desktop?


Upcoming Training