Advertisement
Advertisement

More Related Content

Advertisement

More from Docker, Inc.(20)

Advertisement

Docker 1.11 @ Docker SF Meetup

  1. Containerd Internals
  2. What is containerd? • It is a runc multiplexer • Manages container lifecycle operations – signal – pause/resume – events 3
  3. Why build it? • Decouple container lifecycle/execution management from Docker • Small and fast • runc integration 4
  4. How is it built? 5 • Lock-free Events – start – signal – exit – SIGCHLD
  5. How is it built? 6 • Concurrency – 200 containers + 200 workers = 54.5/s – 200 containers + 10 workers = 71.2/s
  6. How is it built? 7 • containerd-shim – daemonless containers – 1 shim per container – report exit status • fifos for STDIO • reparent to system init
  7. Docker 1.11 … and a glimpse of the future
  8. Docker 1.11 • Relies entirely on containerd / runC for execution – No more direct dependency on libcontainer – Docker alone isn’t capable of running containers anymore ¯_(ツ)_/¯ • What does it mean for the user? – Short answer: right now, nothing – Still pretty cool! 9
  9. Docker 1.11 10 Docker Engine > _ containerd runC shim runC shim runC shim runC shim
  10. Docker 1.11 • Focus on correctness – No regressions on the runtime – Without performance degradation • Introduce the new binaries • A first look at the new features this will enable 11 # ls -lah /usr/local/bin/docker* -rwxr-xr-x 1 root root 34M Apr 23 03:13 /usr/bin/docker -rwxr-xr-x 1 root root 14M Apr 23 03:12 /usr/bin/docker-containerd -rwxr-xr-x 1 root root 11M Apr 23 03:12 /usr/bin/docker-containerd-ctr -rwxr-xr-x 1 root root 7.0M Apr 23 03:12 /usr/bin/docker-containerd-shim -rwxr-xr-x 1 root root 9.1M Apr 23 03:11 /usr/bin/docker-runc
  11. Choosing your execution backend • Before: Docker had a hardcoded set of supported “execution drivers” • Future plans – Specify your execution backend on a per-container basis – E.g., `docker run --exec-driver=custom redis` • A whole ecosystem of OCI-compliant backends – runV, a hypervisor-based runtime – runZ, an ongoing effort from Oracle based on Solaris Zones – Clear Containers, an Intel project based on a lightweight hypervisor 12
  12. Choosing your execution backend 13 Docker Engine > _ containerd runC shim runX shim runY shim runZ shim
  13. Resilience • Container lifecycle should be independent of the daemon – Ultimate goal: Docker should never decide on stopping a container • Not there yet, but we’re getting closer! 14
  14. Resilience 15 Docker Engine > _ containerd runC shim runC shim runC shim runC shim
  15. Resilience 16 > _ containerd runC shim runC shim runC shim runC shim Docker Engine
  16. Resilience 17 Docker Engine > _ runC shim runC shim runC shim runC shim containerd
  17. THANK YOU
Advertisement