SlideShare a Scribd company logo
Docker Engine
Evolution:
From a Monolith to
Discrete Components
Hello!
Phil Estes
> Office of the CTO
> IBM Watson & Cloud Platform
> Docker Captain
> Containerd and Moby Project
maintainer
2
1.
The Docker
Engine
“Established 2013.”
@estesp
/usr/bin/docker
Single statically-linked
binary comprised:
> Client
> Daemon
> Build tool
> Registry client
4
$ docker run ubuntu
$ docker --daemon
$ docker build -t estesp/myimg .
$ docker push estesp/myimg
$ docker pull estesp/myimg
(circa 2013-2015)
@estesp
libnetwork
VolumeAPI
AuthZ
ctr-shim
runc
{
/usr/bin/docker
/usr/bin/dockerd
/usr/bin/dockerd
/usr/bin/docker
Single statically-linked
binary comprised:
> Client
> Daemon
> Build tool
> Registry client
HTTP/JSON
Docker API
gRPC
API
5
2.
The OCI & runc
Container execution grows up
into a standard
@estesp
& runC
> Announced June 20th, 2015
> Charter signed on
December 8th, 2015
> 44 member companies
> Both specifications
reached 1.0 June 2017
https://opencontainers.org
https://github.com/opencontainers
> runc is a client wrapper around libcontainer
> libcontainer is the OS level interface for containers
> OCI spec covers Solaris, Linux, & MS Windows
$ docker run -it --read-only 
-v /host:/hostpath 
alpine sh
/#
{
"ociVersion": "1.0.0",
"platform": {
"os": "linux",
"arch": "amd64"
},
"process": {
"terminal": true,
"args": [
"sh"
],
"env": [
"PATH=/usr/sbin:/usr/local/bin:/bin”
config.json
• A Linux Foundation Collaborative Project
• Free from control by any particular vendor’s specific cloud stack or ecosystem
• Includes a specification, reference runtime* and now, a specified image format
*seeded with runc + libcontainer by Docker
7
@estesp
runC
Created in June 2015
> 16 releases (1.0.0-rc5 underway)
> 215 contributors
> OCI maintained/governance
> Used by Docker, containerd,
garden-runc/Guardian, many others
▪ Runc is a client wrapper around the pre-existing libcontainer
library project
▪ Runc is one implementation of the OCI runtime specification
▪ Scope of runc is clearly limited by OCI charter: no networking,
image handling/resolution, storage support
▪ Enablement of low-level OS features happen here: ambient
caps, rootless containers, new cgroup support, and so on
▪ Daemon-less operation; wrapping code must handle any
broader node and cluster level container mgmt.
8
3.
containerd
A boring base container runtime,
contributed to the CNCF
@estesp
Created in December 2015
> 33 releases (1.0.2 currently)
> 120 contributors
> Docker created; now a CNCF project
> Used by Docker, cri-containerd; (soon
OpenWhisk, Cloud Foundry, Puppet, etc.)
▪ Launched initially in December 2015 (in Docker early 2016)
▪ Two streams of activity:
□ “0.2.x” branch: used in former Docker releases as a
simple runc manager (up until 17.11)
□ “1.0.0” branch: based on the December 2016
announcement, contributed to CNCF
▪ Executes containers using the OCI runc executor;
containerd manages state/metadata, image & registry
interactions, snapshot drivers (overlay, btrfs)
▪ Supports Linux on several architectures; Windows support
in 1.1 10
@estesp
Metadata Content Snapshotter
Runtime
Linux (shim)
OCI runC
IMAGE TASK CONTAINER
Client library (Golang)gRPC
Service
APIs
Vendor client library to embed containerd{ or }
▪ Metrics API &
Prometheus support
▪ OCI runtime and
image support
▪ Clean API and
abstractions
▪ Pluggable runtime
support (used by
VMWare impl.)
▪ Namespace support
(administrative/soft
multi-tenancy)
11
4.
Docker CE and
Moby
Putting it all together.
@estesp
13
> Separated from Docker OSS product
> Umbrella for open source innovations
@estesp
14
Docker Innovation Model:
> Moby open source feeds into products
> Products for both developer community,
> And commercial/enterprise community
@estesp
libnetwork
VolumeAPI
AuthZ
ctr-shim
runc
{
/usr/bin/docker
/usr/bin/dockerd
/usr/bin/dockerd
HTTP/JSON
Docker API
gRPC
API
15
http://github.com/docker/cli
http://github.com/moby/moby
http://github.com/containerd/containerd
http://github.com/opencontainers/runc
http://github.com/docker/docker-ce
5.
Other Uses
Components Enable Reuse
@estesp
Users
runC
CYCLE https://cycle.io
http://cri-o.io
- OCI SPEC IMPLEMENTERS
- Hyper.sh
- Intel Clear Containers
- (now combined as Kata containers)
- Others?
@estesp
Users
- CURRENT
- Docker (moby)
- Kubernetes
(cri-containerd)
- SwarmKit
- LinuxKit
- BuildKit
- PLANNING/DEVELOPING
- CloudFoundry
(Garden-runC)
- Apache OpenWhisk
- Puppet R&D
- {your project here}
@estesp
Kubernetes; Container Orchestrator
▪ Kubernetes has no code to execute or run
containers on Linux or Windows
▪ Initially the Kubernetes pod manager
(called “kubelet”) had direct linkage to the
Docker engine
19
kubelet dockershim dockerd
containerd
runc
https://github.com/kubernetes/kubernetes/tree/release-1.4/pkg/kubelet/dockershim
@estesp
kubelet
kubelet
dockershim (CRI)
Docker engine
containerd
containerd-shim
containerd-shim
containerd-shim
runc
runc
runc
containerd
containerd-shim
containerd-shim
containerd-shim
runc
runc
runc
cri plugin
containerd
cri-containerd
ttrpc: very lightweight
gRPC protocol format
Kubernetes CRI Runtimes:
Docker vs. cri-containerd
( **NOTE: Cri-container project merged into containerd
GitHub project in January 2018; will become a plugin
within the containerd binary )
**
20
21
Thanks!
@estesp
github.com/estesp
estesp@gmail.com
https://integratedcode.us
Slack/IRC: estesp

More Related Content

PDF
It's 2018. Are My Containers Secure Yet!?
PDF
Embedding Containerd For Fun and Profit
PDF
CRI Runtimes Deep-Dive: Who's Running My Pod!?
PDF
Docker Athens: Docker Engine Evolution & Containerd Use Cases
PDF
Whose Job Is It Anyway? Kubernetes, CRI, & Container Runtimes
PDF
Containerd Internals: Building a Core Container Runtime
PDF
Containerd Project Update: FOSDEM 2018
PDF
An Open Source Story: Open Containers & Open Communities
It's 2018. Are My Containers Secure Yet!?
Embedding Containerd For Fun and Profit
CRI Runtimes Deep-Dive: Who's Running My Pod!?
Docker Athens: Docker Engine Evolution & Containerd Use Cases
Whose Job Is It Anyway? Kubernetes, CRI, & Container Runtimes
Containerd Internals: Building a Core Container Runtime
Containerd Project Update: FOSDEM 2018
An Open Source Story: Open Containers & Open Communities

What's hot (20)

PDF
What's Running My Containers? A review of runtimes and standards.
PDF
Container Runtimes: Comparing and Contrasting Today's Engines
PDF
The State of containerd
PPTX
CRI-containerd
PDF
Docker London Meetup: Docker Engine Evolution
PPTX
LinuxKit
PDF
KubeCon EU 2016: "rktnetes": what's new with container runtimes and Kubernetes
PPTX
Containerd - core container runtime component
PDF
Quantifying Container Runtime Performance: OSCON 2017 Open Container Day
PDF
Introduction to CRI and OCI
PPTX
Introduction kubernetes 2017_12_24
PPTX
containerd the universal container runtime
PDF
FOSDEM 2019: A containerd Project Update
PDF
Bucketbench: Benchmarking Container Runtime Performance
PDF
Kubernetes 架構與虛擬化之差異
PDF
Virtualization inside kubernetes
PDF
The relationship between Docker, Kubernetes and CRI
PDF
Devoxx 2016: A Developer's Guide to OCI and runC
PDF
Docker Platform Internals: Taking runtimes and image creation to the next lev...
PDF
KubeCon EU 2016: Bringing an open source Containerized Container Platform to ...
What's Running My Containers? A review of runtimes and standards.
Container Runtimes: Comparing and Contrasting Today's Engines
The State of containerd
CRI-containerd
Docker London Meetup: Docker Engine Evolution
LinuxKit
KubeCon EU 2016: "rktnetes": what's new with container runtimes and Kubernetes
Containerd - core container runtime component
Quantifying Container Runtime Performance: OSCON 2017 Open Container Day
Introduction to CRI and OCI
Introduction kubernetes 2017_12_24
containerd the universal container runtime
FOSDEM 2019: A containerd Project Update
Bucketbench: Benchmarking Container Runtime Performance
Kubernetes 架構與虛擬化之差異
Virtualization inside kubernetes
The relationship between Docker, Kubernetes and CRI
Devoxx 2016: A Developer's Guide to OCI and runC
Docker Platform Internals: Taking runtimes and image creation to the next lev...
KubeCon EU 2016: Bringing an open source Containerized Container Platform to ...
Ad

Similar to Docker Engine Evolution: From Monolith to Discrete Components (20)

PDF
Diving Through The Layers: Investigating runc, containerd, and the Docker eng...
PDF
Innovating Out In The Open - OSCON 2016
PDF
runC: The little engine that could (run Docker containers) by Docker Captain ...
PDF
Runc: The Little Engine That Could (Run Docker Containers)
PPTX
Innovating Out in the Open
PPTX
Building Distributed Systems without Docker, Using Docker Plumbing Projects -...
PDF
Docker 1.11 @ Docker SF Meetup
PDF
Docker 1.11 Meetup: Containerd and runc, by Arnaud Porterie and Michael Crosby
PDF
Docker 1.11 Meetup: Containerd and runc, by Arnaud Porterie and Michael Crosby
PPTX
What is Docker?
PPTX
Being a Moby maintainer
PPTX
runC – Open Container Initiative
PDF
Docker introduction
PDF
from Docker to Moby and back. what changed ?
PDF
24 23 jun17 2may17 16231 ijeecs latest_version (1) edit septian
PDF
Docker 0.11 at MaxCDN meetup in Los Angeles
PDF
Agile Brown Bag - Vagrant & Docker: Introduction
PDF
Open collaboration in the Moby Project
PDF
Evolution of containers to kubernetes
PDF
Diving Through The Layers: Investigating runc, containerd, and the Docker eng...
Innovating Out In The Open - OSCON 2016
runC: The little engine that could (run Docker containers) by Docker Captain ...
Runc: The Little Engine That Could (Run Docker Containers)
Innovating Out in the Open
Building Distributed Systems without Docker, Using Docker Plumbing Projects -...
Docker 1.11 @ Docker SF Meetup
Docker 1.11 Meetup: Containerd and runc, by Arnaud Porterie and Michael Crosby
Docker 1.11 Meetup: Containerd and runc, by Arnaud Porterie and Michael Crosby
What is Docker?
Being a Moby maintainer
runC – Open Container Initiative
Docker introduction
from Docker to Moby and back. what changed ?
24 23 jun17 2may17 16231 ijeecs latest_version (1) edit septian
Docker 0.11 at MaxCDN meetup in Los Angeles
Agile Brown Bag - Vagrant & Docker: Introduction
Open collaboration in the Moby Project
Evolution of containers to kubernetes
Ad

More from Phil Estes (14)

PDF
Enabling Security via Container Runtimes
PDF
Extended and embedding: containerd update & project use cases
PDF
Cloud Native TLV Meetup: Securing Containerized Applications Primer
PDF
Securing Containerized Applications: A Primer
PDF
Securing Containerized Applications: A Primer
PDF
Let's Try Every CRI Runtime Available for Kubernetes
PDF
CraftConf 2019: CRI Runtimes Deep Dive: Who Is Running My Pod?
PDF
JAX Con 2019: Containers. Microservices. Cloud. Open Source. Fantasy or Reali...
PDF
Giving Back to Upstream | DockerCon 2019
PDF
AtlanTEC 2017: Containers! Why Docker, Why NOW?
PDF
Empower Your Docker Containers with Watson - DockerCon 2017 Austin
PDF
Containerize, PaaS, or Go Serverless!?
PDF
Container Security: How We Got Here and Where We're Going
PDF
Live Container Migration: OpenStack Summit Barcelona 2016
Enabling Security via Container Runtimes
Extended and embedding: containerd update & project use cases
Cloud Native TLV Meetup: Securing Containerized Applications Primer
Securing Containerized Applications: A Primer
Securing Containerized Applications: A Primer
Let's Try Every CRI Runtime Available for Kubernetes
CraftConf 2019: CRI Runtimes Deep Dive: Who Is Running My Pod?
JAX Con 2019: Containers. Microservices. Cloud. Open Source. Fantasy or Reali...
Giving Back to Upstream | DockerCon 2019
AtlanTEC 2017: Containers! Why Docker, Why NOW?
Empower Your Docker Containers with Watson - DockerCon 2017 Austin
Containerize, PaaS, or Go Serverless!?
Container Security: How We Got Here and Where We're Going
Live Container Migration: OpenStack Summit Barcelona 2016

Recently uploaded (20)

PDF
How to Migrate SBCGlobal Email to Yahoo Easily
PDF
System and Network Administration Chapter 2
PPTX
VVF-Customer-Presentation2025-Ver1.9.pptx
PDF
System and Network Administraation Chapter 3
PDF
Nekopoi APK 2025 free lastest update
PDF
Design an Analysis of Algorithms I-SECS-1021-03
PDF
Addressing The Cult of Project Management Tools-Why Disconnected Work is Hold...
PPTX
Operating system designcfffgfgggggggvggggggggg
PPTX
Online Work Permit System for Fast Permit Processing
PDF
Claude Code: Everyone is a 10x Developer - A Comprehensive AI-Powered CLI Tool
PPTX
Agentic AI : A Practical Guide. Undersating, Implementing and Scaling Autono...
PDF
Audit Checklist Design Aligning with ISO, IATF, and Industry Standards — Omne...
PDF
PTS Company Brochure 2025 (1).pdf.......
PDF
Which alternative to Crystal Reports is best for small or large businesses.pdf
PPTX
ISO 45001 Occupational Health and Safety Management System
PDF
Upgrade and Innovation Strategies for SAP ERP Customers
PDF
AI in Product Development-omnex systems
PDF
Odoo Companies in India – Driving Business Transformation.pdf
PDF
medical staffing services at VALiNTRY
PPTX
L1 - Introduction to python Backend.pptx
How to Migrate SBCGlobal Email to Yahoo Easily
System and Network Administration Chapter 2
VVF-Customer-Presentation2025-Ver1.9.pptx
System and Network Administraation Chapter 3
Nekopoi APK 2025 free lastest update
Design an Analysis of Algorithms I-SECS-1021-03
Addressing The Cult of Project Management Tools-Why Disconnected Work is Hold...
Operating system designcfffgfgggggggvggggggggg
Online Work Permit System for Fast Permit Processing
Claude Code: Everyone is a 10x Developer - A Comprehensive AI-Powered CLI Tool
Agentic AI : A Practical Guide. Undersating, Implementing and Scaling Autono...
Audit Checklist Design Aligning with ISO, IATF, and Industry Standards — Omne...
PTS Company Brochure 2025 (1).pdf.......
Which alternative to Crystal Reports is best for small or large businesses.pdf
ISO 45001 Occupational Health and Safety Management System
Upgrade and Innovation Strategies for SAP ERP Customers
AI in Product Development-omnex systems
Odoo Companies in India – Driving Business Transformation.pdf
medical staffing services at VALiNTRY
L1 - Introduction to python Backend.pptx

Docker Engine Evolution: From Monolith to Discrete Components