SlideShare ist ein Scribd-Unternehmen logo
1 von 36
Downloaden Sie, um offline zu lesen
Kohei Tokunaga & Akihiro Suda, NTT Corporation
Introduction and Deep Dive Into Containerd
Introduction to containerd
Kohei Tokunaga, NTT Corporation
Overview
● CNCF graduated container runtime project
● Resource manager
• Container process
• Image artifacts
• Filesystem snapshots
• Metadata and dependencies management
● Tightly scoped (100% approval is required to stretch) but highly extensible
● Used by Kubernetes, Docker and various container-based projects
https://github.com/containerd/containerd
Usage in community
● Managed: GKE, AWS Fargate, AKS, IKS
● Development: Docker/moby, BuildKit
● K8s distribution: k3s, kind、minikube, kubespray, microk8s, k0s
● FaaS: faasd
Adoption
https://sysdig.com/blog/sysdig-2021-contai
ner-security-usage-report/
● Docker’s use of containerd + pure use of containerd is
83% of container usage (Sysdig 2021 container security
and usage report)
● Used by several managed services as well as open source
projects in community
How containerd is used?
Low-level runtime
kubelet
CRI
Low-level runtime
containerd API
dockerd
Low-level runtime
containerd API
Arbitrary tools
As a CRI runtime
As a component of
Docker
As a general container
management tool
Containerd as a CRI runtime
Container Registry
kubectl apply
Detects Pod events
Manages Pods using CRI runtime
• Manages Pods, containers and images
• Pulls image from the registry
• Executes low-level runtimes
Creates and manipulates isolated
execution environments as containers
e.g. runc, gVisor, Kata Containers
Node
Low-level runtime
apiserver
kubelet
CRI
pull
The de facto standard CRI runtime for Kubernetes
● Managed Kubernetes: IKS, GKE, AKS, AWS Fargate, …
● Kubernetes distributions: K3s, kind, minikube, kubespray, microk8s, k0s, ...
Containerd as a component of Docker
Container Registry
docker run
Manages containers, images, networking
and volumes, etc.
Low-level runtime
• Manages containers
• Executes low-level runtimes
containerd API
dockerd
Node
pull/push
Docker API
Creates and manipulates isolated
execution environments as containers
e.g. runc, gVisor, Kata Containers
Containerd as a general container management tool
● Several applications are developed based on containerd
● Containerd provides a Go client library (discussed later)
● Applications can extend containerd with plugins, without recompilation (discussed later)
Applications managing containers
Low-level runtime
Provides container management
functionality to upper tools
containerd API
BuildKit faasd
Pouch
Container
nerdctl
Creates and manipulates isolated
execution environments as containers
e.g. runc, gVisor, Kata Containers
Containerd Internal
Kohei Tokunaga, NTT Corporation
Containerd Architecture
OS
plugins
container image tasks
namespace
leases version
introspection
events diff
Server
runtimes
Client
containerd
API
Kubelet
CRI
● Client-server architecture
• Go client library (used by Docker, BuildKit, etc.)
● Client calls server via containerd API
• Through /run/containerd/containerd.sock
● Various low-level runtimes are supported
• OCI runtimes (runc, gVisor, Kata Container, etc)
• Firecracker (firecracker-containerd)
● Extensibility
• Low-level plugins
• Extending containerd API with custom services
• Client library is easy to customize
Containerd Client
● “Smart” Client (Go library)
• Containerd API bindings
• Registry client
• Pulling/Pushing images
• Image unpacker
• Creating OCI config for OCI runtimes
● Go application can integrate with containerd
using client library
OS
container image tasks
namespace
leases version
introspection
events diff
container image Etc…
namespace
leases content
snapshots
events tasks
Registry client
Image
unpacker
events
OCI config
constructor
Server
plugins runtimes
API bindings
Utilities
Utilities
Containerd Client Implementations
OS
container image tasks
namespace
leases version
introspection
events diff
Server
plugins runtimes
ctr, nerdctl, Docker, etc
containerd
API
Client lib
● ctr: https://github.com/containerd/containerd
• CLI client for containerd
• Mainly for debugging or trying new features
● nerdctl: https://github.com/containerd/nerdctl
• Docker-compatible CLI for containerd
• Easy to use for Docker users
• Supports containerd’s cutting-edge features
(e.g. lazy pulling, image encryption)
● containerd-based tools
• Arbitrary tools can integrate to containerd
using client library
• e.g. Docker, BuildKit, faasd
Containerd Core & API
container image etc…
namespace
leases content
snapshots
CRI tasks
Metadata store
OS
Container
management
Image
management
Container
execution
Shared DB among services
shim
OCI
CRI
● Micro services
• Containerd API is the set of APIs of services
• Services are loosely connected
● Shared metadata DB
• bbolt-based
• https://github.com/etcd-io/bbolt
• Stores metadata of containers, images,
contents, snapshots, etc.
• Manages reference graph for GC
CRI Service
NRI
Plugin
Image
Service
Container
Service
Image
service
Runtime
service
Task
Service
CNI
Plugin
Containerd client
・・・
CNI
client
NRI
client
● CRI service implements CRI of Kubernetes
● Implemented as a builtin service
• Initially repo and binary were separated from
containerd
• Merged to containerd/containerd since 1.5
● Depends on other services for container & image
management
• Communicates via function call
● Uses external CNI/NRI plugins for networking and
resource management
plugins
kubelet
CRI service
Pod namespace
container container
Registry
pull
Low-level Services
OS
container image etc…
namespace
leases content
snapshots
CRI tasks
C
o
n
t
e
n
t
s
t
o
r
e
S
n
a
p
s
h
o
t
t
e
r
R
u
n
t
i
m
e
● Content Store
• Stores image manifest and layers “as-is”
• content addressable (keyed by digest)
● Snapshotter
• Manages ”snapshots”
• Extracted and stacked view of rootfs layers
• Passed to OCI runtimes as rootfs
• Snapshotter impl. per backing filesystem
• Overlayfs, btrfs, aufs, FUSE, …
● Runtime
• Executes low-level runtimes via “shim”
• Shim is a wrapper daemon of OCI runtime
• Well-suit to stateful runtimes (e.g. Kata
Containers)
Image content flow
unpacker
Content Store Diff Service Snapshotter
Unpack layers
extracted
snapshots
Task & Runtime
Store layer blobs “as-is”
Decompression
Decryption
etc…
Mount snapshots as rootfs
rootfs of
a container
remote
container &
task service
API bindings
・・・
Registry
pull
containerd client utilities
Containerd Extensibility
Kohei Tokunaga, NTT Corporation
Extending containerd with plugins and services
OS
container image etc…
namespace
leases content
snapshots
CRI tasks
shim
OCI
plugins
plugins
s
h
i
m
● containerd is tightly scoped but highly extensible
● Custom low-level service; no need to recompile
• external binary plugins
• Plugin via unix socket (proxy snapshotter,
proxy content store)
• Plugin as an executable binary (stream
processor, shim)
• Go plugin
● API is extendable by implementing your own
custom service
• e.g. ”control API” of firecracker-containerd
Extension example 1: Lazy pulling
● Remote snapshotter plugin
• allows “lazy pulling” of images from arbitrary remote store (not limited to the registry)
• container can startup without waiting for the entire image contents being locally available
● Snapshotter can run as an external daemon (proxy snapshotter)
• No re-compilation is required
• Containerd talks with the snapshotter via unix socket
● Stargz Snapshotter enables lazy pulling of OCI-compatible eStargz/Stargz images from standard registry
• https://github.com/containerd/stargz-snapshotter
Arbitrary remote store
proce
ss
container
Remote
Snapshotter
Node
Provides rootfs snapshots as mount points
Remote Snapshotters in community
- Stargz Snapshotter
- CVMFS-snapshotter
- Nydus-snapshotter
- OverlayBD-snapshotter
Extension example 2: Generic image layers
● Containerd can handle arbitrary image layers, not limited to OCI standards
• gzip, zstd, encrypted layers…
● Stream Processor plugin converts arbitrary media type to another (e.g. OCI standard types)
● Separated binary can plug into containerd, without re-compilation
Stream Processor in community
- imgcrypt for encrypted images
e.g. layer decription
Image
layers
Rootfs
snapshots
・・・
Builtin
decompressor
Plugin binary
Diff Service
Extension example 3: Integrating low-level runtimes
● V2 Shim per low-level runtime
● Both of OCI (e.g. runc) and Non-OCI (e.g. Firecracker) runtime can integrate to containerd
● Binary naming convention: io.containerd.runc.v2 -> containerd-shim-runc-v2
● Pluggable logging destination
• fifo(Linux), npipe(Windows), external binary(Linux, Windows), file(Linux, Windows)
runc
Kata
Containers
gVisor Firecracker
io.containerd.runc.v2 io.containerd.kata.v2 io.containerd.runsc.v1 io.containerd.aws-firecracker
Low-level
Runtimes
in community
V2 shims in
community
Runtime service
Implementing your own containerd client
Akihiro Suda, NTT Corporation
Two APIs are available
containerd API is recommended for most use cases, but CRI API might be easier to
get started
Implementing your own containerd client
containerd API CRI API
Consumers Docker/Moby, BuildKit, faasd,
nerdctl...
Kubernetes
Paradigm Container-oriented Pod-oriented
Flexibility Good Bad
Simplicity Bad Good
Transportation gRPC over UNIX socket gRPC over UNIX socket
Implementing your own containerd client
● Both containerd API and CRI API use gRPC
● In theory you could use any language for your own client
● But containerd API depends on “smart client” written in Go,
especially for pulling images
● So, currently, Go is the best language for Native API
● Contribution is wanted for other languages
Implementing your own containerd client
Example: https://containerd.io/docs/getting-started/
Implementing your own containerd client
Example: https://containerd.io/docs/getting-started/
Implementing your own containerd client
Example: https://containerd.io/docs/getting-started/
You will add WithXXX options here:
- oci.WithProcessArgs
- oci.WithMounts
- oci.WithMemoryLimit
- seccomp.WithProfile
- ...
Implementing your own containerd client
In addition to the client, you will also want to implement OCI hooks and logger binary
● OCI Hooks: custom commands called on creation and deletion of containers
○ e.g., for setting up and tearing down CNI bridge and portmap
○ Optional, but necessary if you want your containers to be restarted
automatically on host reboot
○ Example: https://github.com/containerd/nerdctl/blob/v0.7.2/run.go#L629-L663
● Logger Binary: custom command for handling container logs
○ e.g., store as a local file, transfer to fluentd, …
○ Example: https://github.com/containerd/nerdctl/blob/v0.7.2/run.go#L618-L627
Implementing your own containerd client
Full example: nerdctl
https://github.com/containerd/nerdctl
Spun out from `ctr` tool with more practical
features:
- Automatic restarting
- Port forwarding
- Logging
- Rootless
- Stargz
- OCIcrypt
- …
You may copy the code as the
“starter pack” to create your own client :)
containerd 1.5 updates and future plan
Akihiro Suda, NTT Corporation
containerd 1.5 updates (April)
● Support zstd as an image compression algorithm
○ Faster than gzip
○ https://facebook.github.io/zstd/
● Support NRI: Node Resource Interface
○ Akin to CNI, but for managing resources, e.g., cgroup
○ https://github.com/containerd/nri
● Enable OCIcrypt decryption by default
○ Supported since 1.3, but it was not enabled by default
○ https://github.com/containers/ocicrypt https://github.com/containerd/imgcrypt
● nerdctl (contaiNERD ctl) joined containerd, as a non-core subproject
○ Docker-compatible CLI but with stargz and ocicrypt
○ https://github.com/containerd/nerdctl
containerd 1.5 updates (April)
● The CRI plugin repo (github.com/containerd/cri) is now merged into the main repo
(github.com/containerd/containerd)
○ No visible change to users, but significantly simplifies contribution process
● Client library is now available as a Go module
Future plan
● Filesystem quota (#759)
● CRI support for user namespaces (KEP #2101)
○ Run Kubernetes pods as a user that is different from the daemon user
○ Akin to “Rootless Containers”, but different (and does not conflict, either)
● Chown-less user namespaces (#4734)
○ Requires idmapped mounts, introduced in kernel 5.12
● Pause-less pod sandboxes (#4131)
● More documentation (help wanted! 🙏)
Third party plugin updates
● Nydus Snapshotter https://github.com/dragonflyoss/image-service
○ Similar to Stargz Snapshotter but with a different image format
● OverlayBD Snapshotter https://github.com/alibaba/accelerated-container-image
○ Boot containers from iSCSI
● runu https://github.com/ukontainer/runu
○ Linux containers on macOS, using LKL (Linux Kernel Library)
● runj https://github.com/samuelkarp/runj
○ FreeBSD containers
Recap
● The de facto standard runtime for Kubernetes, but not only for Kubernetes
● Extensible with plugins
○ Runtime plugins, e.g., gVisor, Kata
○ Snapshotter plugins, e.g., Stargz Snapshotter
○ Stream processor plugins, e.g., OCIcrypt
○ Logging binary plugins, e.g., json-file
○ ...
● New subproject: nerdctl (https://github.com/containerd/nerdctl)
○ Like `docker` but with full features of containerd
○ Like `ctr` but with full user experience of `docker`
○ nerdctl run -d -p 80:80 --restart=always nginx
[KubeCon EU 2021] Introduction and Deep Dive Into Containerd

Weitere ähnliche Inhalte

Was ist angesagt?

Ansible 2.10 と Collection
Ansible 2.10 と CollectionAnsible 2.10 と Collection
Ansible 2.10 と Collectionakira6592
 
Containerd internals: building a core container runtime
Containerd internals: building a core container runtimeContainerd internals: building a core container runtime
Containerd internals: building a core container runtimeDocker, Inc.
 
大規模サービスを支えるネットワークインフラの全貌
大規模サービスを支えるネットワークインフラの全貌大規模サービスを支えるネットワークインフラの全貌
大規模サービスを支えるネットワークインフラの全貌LINE Corporation
 
仮想化環境におけるパケットフォワーディング
仮想化環境におけるパケットフォワーディング仮想化環境におけるパケットフォワーディング
仮想化環境におけるパケットフォワーディングTakuya ASADA
 
Cloud Native Networking & Security with Cilium & eBPF
Cloud Native Networking & Security with Cilium & eBPFCloud Native Networking & Security with Cilium & eBPF
Cloud Native Networking & Security with Cilium & eBPFRaphaël PINSON
 
P2P Container Image Distribution on IPFS With containerd and nerdctl
P2P Container Image Distribution on IPFS With containerd and nerdctlP2P Container Image Distribution on IPFS With containerd and nerdctl
P2P Container Image Distribution on IPFS With containerd and nerdctlKohei Tokunaga
 
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】Masahito Zembutsu
 
Stargz Snapshotter: イメージのpullを省略しcontainerdでコンテナを高速に起動する
Stargz Snapshotter: イメージのpullを省略しcontainerdでコンテナを高速に起動するStargz Snapshotter: イメージのpullを省略しcontainerdでコンテナを高速に起動する
Stargz Snapshotter: イメージのpullを省略しcontainerdでコンテナを高速に起動するKohei Tokunaga
 
[KubeCon EU 2020] containerd Deep Dive
[KubeCon EU 2020] containerd Deep Dive[KubeCon EU 2020] containerd Deep Dive
[KubeCon EU 2020] containerd Deep DiveAkihiro Suda
 
Install a micro k8s single node cluster of kubernetes on windows 10
Install a micro k8s single node cluster of kubernetes on windows 10Install a micro k8s single node cluster of kubernetes on windows 10
Install a micro k8s single node cluster of kubernetes on windows 10Lợi Dương
 
Introduction to eBPF
Introduction to eBPFIntroduction to eBPF
Introduction to eBPFRogerColl2
 
Understanding docker networking
Understanding docker networkingUnderstanding docker networking
Understanding docker networkingLorenzo Fontana
 
Introduction to Kafka Cruise Control
Introduction to Kafka Cruise ControlIntroduction to Kafka Cruise Control
Introduction to Kafka Cruise ControlJiangjie Qin
 
BPF: Tracing and more
BPF: Tracing and moreBPF: Tracing and more
BPF: Tracing and moreBrendan Gregg
 
分割と整合性と戦う
分割と整合性と戦う分割と整合性と戦う
分割と整合性と戦うYugo Shimizu
 
Kubernetes for Beginners: An Introductory Guide
Kubernetes for Beginners: An Introductory GuideKubernetes for Beginners: An Introductory Guide
Kubernetes for Beginners: An Introductory GuideBytemark
 
マイクロサービスと Red Hat Integration
マイクロサービスと Red Hat Integrationマイクロサービスと Red Hat Integration
マイクロサービスと Red Hat IntegrationKenta Kosugi
 
Containers and workload security an overview
Containers and workload security an overview Containers and workload security an overview
Containers and workload security an overview Krishna-Kumar
 
DevJam 2019 - Introduction to Kubernetes
DevJam 2019 - Introduction to KubernetesDevJam 2019 - Introduction to Kubernetes
DevJam 2019 - Introduction to KubernetesRonny Trommer
 

Was ist angesagt? (20)

Ansible 2.10 と Collection
Ansible 2.10 と CollectionAnsible 2.10 と Collection
Ansible 2.10 と Collection
 
Containerd internals: building a core container runtime
Containerd internals: building a core container runtimeContainerd internals: building a core container runtime
Containerd internals: building a core container runtime
 
大規模サービスを支えるネットワークインフラの全貌
大規模サービスを支えるネットワークインフラの全貌大規模サービスを支えるネットワークインフラの全貌
大規模サービスを支えるネットワークインフラの全貌
 
仮想化環境におけるパケットフォワーディング
仮想化環境におけるパケットフォワーディング仮想化環境におけるパケットフォワーディング
仮想化環境におけるパケットフォワーディング
 
Cloud Native Networking & Security with Cilium & eBPF
Cloud Native Networking & Security with Cilium & eBPFCloud Native Networking & Security with Cilium & eBPF
Cloud Native Networking & Security with Cilium & eBPF
 
P2P Container Image Distribution on IPFS With containerd and nerdctl
P2P Container Image Distribution on IPFS With containerd and nerdctlP2P Container Image Distribution on IPFS With containerd and nerdctl
P2P Container Image Distribution on IPFS With containerd and nerdctl
 
KubeVirt 101
KubeVirt 101KubeVirt 101
KubeVirt 101
 
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
 
Stargz Snapshotter: イメージのpullを省略しcontainerdでコンテナを高速に起動する
Stargz Snapshotter: イメージのpullを省略しcontainerdでコンテナを高速に起動するStargz Snapshotter: イメージのpullを省略しcontainerdでコンテナを高速に起動する
Stargz Snapshotter: イメージのpullを省略しcontainerdでコンテナを高速に起動する
 
[KubeCon EU 2020] containerd Deep Dive
[KubeCon EU 2020] containerd Deep Dive[KubeCon EU 2020] containerd Deep Dive
[KubeCon EU 2020] containerd Deep Dive
 
Install a micro k8s single node cluster of kubernetes on windows 10
Install a micro k8s single node cluster of kubernetes on windows 10Install a micro k8s single node cluster of kubernetes on windows 10
Install a micro k8s single node cluster of kubernetes on windows 10
 
Introduction to eBPF
Introduction to eBPFIntroduction to eBPF
Introduction to eBPF
 
Understanding docker networking
Understanding docker networkingUnderstanding docker networking
Understanding docker networking
 
Introduction to Kafka Cruise Control
Introduction to Kafka Cruise ControlIntroduction to Kafka Cruise Control
Introduction to Kafka Cruise Control
 
BPF: Tracing and more
BPF: Tracing and moreBPF: Tracing and more
BPF: Tracing and more
 
分割と整合性と戦う
分割と整合性と戦う分割と整合性と戦う
分割と整合性と戦う
 
Kubernetes for Beginners: An Introductory Guide
Kubernetes for Beginners: An Introductory GuideKubernetes for Beginners: An Introductory Guide
Kubernetes for Beginners: An Introductory Guide
 
マイクロサービスと Red Hat Integration
マイクロサービスと Red Hat Integrationマイクロサービスと Red Hat Integration
マイクロサービスと Red Hat Integration
 
Containers and workload security an overview
Containers and workload security an overview Containers and workload security an overview
Containers and workload security an overview
 
DevJam 2019 - Introduction to Kubernetes
DevJam 2019 - Introduction to KubernetesDevJam 2019 - Introduction to Kubernetes
DevJam 2019 - Introduction to Kubernetes
 

Ähnlich wie [KubeCon EU 2021] Introduction and Deep Dive Into Containerd

containerd and CRI
containerd and CRIcontainerd and CRI
containerd and CRIDocker, Inc.
 
LXC, Docker, and the future of software delivery | LinuxCon 2013
LXC, Docker, and the future of software delivery | LinuxCon 2013LXC, Docker, and the future of software delivery | LinuxCon 2013
LXC, Docker, and the future of software delivery | LinuxCon 2013dotCloud
 
LXC Docker and the Future of Software Delivery
LXC Docker and the Future of Software DeliveryLXC Docker and the Future of Software Delivery
LXC Docker and the Future of Software DeliveryDocker, Inc.
 
Looking Under The Hood: containerD
Looking Under The Hood: containerDLooking Under The Hood: containerD
Looking Under The Hood: containerDDocker, Inc.
 
Containers in depth – Understanding how containers work to better work with c...
Containers in depth – Understanding how containers work to better work with c...Containers in depth – Understanding how containers work to better work with c...
Containers in depth – Understanding how containers work to better work with c...All Things Open
 
[KubeConNA2023] containerd pavilion
[KubeConNA2023] containerd pavilion[KubeConNA2023] containerd pavilion
[KubeConNA2023] containerd pavilionAkihiro Suda
 
20240320 [KubeCon EU Pavilion] containerd.pdf
20240320 [KubeCon EU Pavilion] containerd.pdf20240320 [KubeCon EU Pavilion] containerd.pdf
20240320 [KubeCon EU Pavilion] containerd.pdfAkihiro Suda
 
Containers: from development to production at DevNation 2015
Containers: from development to production at DevNation 2015Containers: from development to production at DevNation 2015
Containers: from development to production at DevNation 2015Jérôme Petazzoni
 
[KubeConEU2023] containerd pavilion
[KubeConEU2023] containerd pavilion[KubeConEU2023] containerd pavilion
[KubeConEU2023] containerd pavilionAkihiro Suda
 
Docker and kubernetes
Docker and kubernetesDocker and kubernetes
Docker and kubernetesDongwon Kim
 
Write Once and REALLY Run Anywhere | OpenStack Summit HK 2013
Write Once and REALLY Run Anywhere | OpenStack Summit HK 2013Write Once and REALLY Run Anywhere | OpenStack Summit HK 2013
Write Once and REALLY Run Anywhere | OpenStack Summit HK 2013dotCloud
 
stackconf 2020 | Replace your Docker based Containers with Cri-o Kata Contain...
stackconf 2020 | Replace your Docker based Containers with Cri-o Kata Contain...stackconf 2020 | Replace your Docker based Containers with Cri-o Kata Contain...
stackconf 2020 | Replace your Docker based Containers with Cri-o Kata Contain...NETWAYS
 
Microservices , Docker , CI/CD , Kubernetes Seminar - Sri Lanka
Microservices , Docker , CI/CD , Kubernetes Seminar - Sri Lanka Microservices , Docker , CI/CD , Kubernetes Seminar - Sri Lanka
Microservices , Docker , CI/CD , Kubernetes Seminar - Sri Lanka Mario Ishara Fernando
 
Docker - Portable Deployment
Docker - Portable DeploymentDocker - Portable Deployment
Docker - Portable Deploymentjavaonfly
 
Let's Try Every CRI Runtime Available for Kubernetes
Let's Try Every CRI Runtime Available for KubernetesLet's Try Every CRI Runtime Available for Kubernetes
Let's Try Every CRI Runtime Available for KubernetesPhil Estes
 
Let's Containerize New York with Docker!
Let's Containerize New York with Docker!Let's Containerize New York with Docker!
Let's Containerize New York with Docker!Jérôme Petazzoni
 

Ähnlich wie [KubeCon EU 2021] Introduction and Deep Dive Into Containerd (20)

containerd and CRI
containerd and CRIcontainerd and CRI
containerd and CRI
 
LXC, Docker, and the future of software delivery | LinuxCon 2013
LXC, Docker, and the future of software delivery | LinuxCon 2013LXC, Docker, and the future of software delivery | LinuxCon 2013
LXC, Docker, and the future of software delivery | LinuxCon 2013
 
LXC Docker and the Future of Software Delivery
LXC Docker and the Future of Software DeliveryLXC Docker and the Future of Software Delivery
LXC Docker and the Future of Software Delivery
 
Looking Under The Hood: containerD
Looking Under The Hood: containerDLooking Under The Hood: containerD
Looking Under The Hood: containerD
 
Containers in depth – Understanding how containers work to better work with c...
Containers in depth – Understanding how containers work to better work with c...Containers in depth – Understanding how containers work to better work with c...
Containers in depth – Understanding how containers work to better work with c...
 
[KubeConNA2023] containerd pavilion
[KubeConNA2023] containerd pavilion[KubeConNA2023] containerd pavilion
[KubeConNA2023] containerd pavilion
 
20240320 [KubeCon EU Pavilion] containerd.pdf
20240320 [KubeCon EU Pavilion] containerd.pdf20240320 [KubeCon EU Pavilion] containerd.pdf
20240320 [KubeCon EU Pavilion] containerd.pdf
 
Containers: from development to production at DevNation 2015
Containers: from development to production at DevNation 2015Containers: from development to production at DevNation 2015
Containers: from development to production at DevNation 2015
 
[KubeConEU2023] containerd pavilion
[KubeConEU2023] containerd pavilion[KubeConEU2023] containerd pavilion
[KubeConEU2023] containerd pavilion
 
Docker and kubernetes
Docker and kubernetesDocker and kubernetes
Docker and kubernetes
 
Containers 101
Containers 101Containers 101
Containers 101
 
Write Once and REALLY Run Anywhere | OpenStack Summit HK 2013
Write Once and REALLY Run Anywhere | OpenStack Summit HK 2013Write Once and REALLY Run Anywhere | OpenStack Summit HK 2013
Write Once and REALLY Run Anywhere | OpenStack Summit HK 2013
 
stackconf 2020 | Replace your Docker based Containers with Cri-o Kata Contain...
stackconf 2020 | Replace your Docker based Containers with Cri-o Kata Contain...stackconf 2020 | Replace your Docker based Containers with Cri-o Kata Contain...
stackconf 2020 | Replace your Docker based Containers with Cri-o Kata Contain...
 
Microservices , Docker , CI/CD , Kubernetes Seminar - Sri Lanka
Microservices , Docker , CI/CD , Kubernetes Seminar - Sri Lanka Microservices , Docker , CI/CD , Kubernetes Seminar - Sri Lanka
Microservices , Docker , CI/CD , Kubernetes Seminar - Sri Lanka
 
Docker - Portable Deployment
Docker - Portable DeploymentDocker - Portable Deployment
Docker - Portable Deployment
 
Let's Try Every CRI Runtime Available for Kubernetes
Let's Try Every CRI Runtime Available for KubernetesLet's Try Every CRI Runtime Available for Kubernetes
Let's Try Every CRI Runtime Available for Kubernetes
 
Let's Containerize New York with Docker!
Let's Containerize New York with Docker!Let's Containerize New York with Docker!
Let's Containerize New York with Docker!
 
Docker.pptx
Docker.pptxDocker.pptx
Docker.pptx
 
Docker.ppt
Docker.pptDocker.ppt
Docker.ppt
 
Docker mentorweek
Docker mentorweekDocker mentorweek
Docker mentorweek
 

Mehr von Akihiro Suda

20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...Akihiro Suda
 
20240321 [KubeCon EU Pavilion] Lima.pdf_
20240321 [KubeCon EU Pavilion] Lima.pdf_20240321 [KubeCon EU Pavilion] Lima.pdf_
20240321 [KubeCon EU Pavilion] Lima.pdf_Akihiro Suda
 
20240201 [HPC Containers] Rootless Containers.pdf
20240201 [HPC Containers] Rootless Containers.pdf20240201 [HPC Containers] Rootless Containers.pdf
20240201 [HPC Containers] Rootless Containers.pdfAkihiro Suda
 
[Podman Special Event] Kubernetes in Rootless Podman
[Podman Special Event] Kubernetes in Rootless Podman[Podman Special Event] Kubernetes in Rootless Podman
[Podman Special Event] Kubernetes in Rootless PodmanAkihiro Suda
 
[KubeConNA2023] Lima pavilion
[KubeConNA2023] Lima pavilion[KubeConNA2023] Lima pavilion
[KubeConNA2023] Lima pavilionAkihiro Suda
 
[DockerConハイライト] OpenPubKeyによるイメージの署名と検証.pdf
[DockerConハイライト] OpenPubKeyによるイメージの署名と検証.pdf[DockerConハイライト] OpenPubKeyによるイメージの署名と検証.pdf
[DockerConハイライト] OpenPubKeyによるイメージの署名と検証.pdfAkihiro Suda
 
[CNCF TAG-Runtime] Usernetes Gen2
[CNCF TAG-Runtime] Usernetes Gen2[CNCF TAG-Runtime] Usernetes Gen2
[CNCF TAG-Runtime] Usernetes Gen2Akihiro Suda
 
[DockerCon 2023] Reproducible builds with BuildKit for software supply chain ...
[DockerCon 2023] Reproducible builds with BuildKit for software supply chain ...[DockerCon 2023] Reproducible builds with BuildKit for software supply chain ...
[DockerCon 2023] Reproducible builds with BuildKit for software supply chain ...Akihiro Suda
 
The internals and the latest trends of container runtimes
The internals and the latest trends of container runtimesThe internals and the latest trends of container runtimes
The internals and the latest trends of container runtimesAkihiro Suda
 
[KubeConEU2023] Lima pavilion
[KubeConEU2023] Lima pavilion[KubeConEU2023] Lima pavilion
[KubeConEU2023] Lima pavilionAkihiro Suda
 
[Container Plumbing Days 2023] Why was nerdctl made?
[Container Plumbing Days 2023] Why was nerdctl made?[Container Plumbing Days 2023] Why was nerdctl made?
[Container Plumbing Days 2023] Why was nerdctl made?Akihiro Suda
 
[FOSDEM2023] Bit-for-bit reproducible builds with Dockerfile
[FOSDEM2023] Bit-for-bit reproducible builds with Dockerfile[FOSDEM2023] Bit-for-bit reproducible builds with Dockerfile
[FOSDEM2023] Bit-for-bit reproducible builds with DockerfileAkihiro Suda
 
[CNCF TAG-Runtime 2022-10-06] Lima
[CNCF TAG-Runtime 2022-10-06] Lima[CNCF TAG-Runtime 2022-10-06] Lima
[CNCF TAG-Runtime 2022-10-06] LimaAkihiro Suda
 
[KubeCon EU 2022] Running containerd and k3s on macOS
[KubeCon EU 2022] Running containerd and k3s on macOS[KubeCon EU 2022] Running containerd and k3s on macOS
[KubeCon EU 2022] Running containerd and k3s on macOSAkihiro Suda
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Akihiro Suda
 
[Paris Container Day 2021] nerdctl: yet another Docker & Docker Compose imple...
[Paris Container Day 2021] nerdctl: yet another Docker & Docker Compose imple...[Paris Container Day 2021] nerdctl: yet another Docker & Docker Compose imple...
[Paris Container Day 2021] nerdctl: yet another Docker & Docker Compose imple...Akihiro Suda
 
[Docker Tokyo #35] Docker 20.10
[Docker Tokyo #35] Docker 20.10[Docker Tokyo #35] Docker 20.10
[Docker Tokyo #35] Docker 20.10Akihiro Suda
 
DockerとPodmanの比較
DockerとPodmanの比較DockerとPodmanの比較
DockerとPodmanの比較Akihiro Suda
 
[KubeCon NA 2020] containerd: Rootless Containers 2020
[KubeCon NA 2020] containerd: Rootless Containers 2020[KubeCon NA 2020] containerd: Rootless Containers 2020
[KubeCon NA 2020] containerd: Rootless Containers 2020Akihiro Suda
 
[DockerCon 2020] Hardening Docker daemon with Rootless Mode
[DockerCon 2020] Hardening Docker daemon with Rootless Mode[DockerCon 2020] Hardening Docker daemon with Rootless Mode
[DockerCon 2020] Hardening Docker daemon with Rootless ModeAkihiro Suda
 

Mehr von Akihiro Suda (20)

20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
 
20240321 [KubeCon EU Pavilion] Lima.pdf_
20240321 [KubeCon EU Pavilion] Lima.pdf_20240321 [KubeCon EU Pavilion] Lima.pdf_
20240321 [KubeCon EU Pavilion] Lima.pdf_
 
20240201 [HPC Containers] Rootless Containers.pdf
20240201 [HPC Containers] Rootless Containers.pdf20240201 [HPC Containers] Rootless Containers.pdf
20240201 [HPC Containers] Rootless Containers.pdf
 
[Podman Special Event] Kubernetes in Rootless Podman
[Podman Special Event] Kubernetes in Rootless Podman[Podman Special Event] Kubernetes in Rootless Podman
[Podman Special Event] Kubernetes in Rootless Podman
 
[KubeConNA2023] Lima pavilion
[KubeConNA2023] Lima pavilion[KubeConNA2023] Lima pavilion
[KubeConNA2023] Lima pavilion
 
[DockerConハイライト] OpenPubKeyによるイメージの署名と検証.pdf
[DockerConハイライト] OpenPubKeyによるイメージの署名と検証.pdf[DockerConハイライト] OpenPubKeyによるイメージの署名と検証.pdf
[DockerConハイライト] OpenPubKeyによるイメージの署名と検証.pdf
 
[CNCF TAG-Runtime] Usernetes Gen2
[CNCF TAG-Runtime] Usernetes Gen2[CNCF TAG-Runtime] Usernetes Gen2
[CNCF TAG-Runtime] Usernetes Gen2
 
[DockerCon 2023] Reproducible builds with BuildKit for software supply chain ...
[DockerCon 2023] Reproducible builds with BuildKit for software supply chain ...[DockerCon 2023] Reproducible builds with BuildKit for software supply chain ...
[DockerCon 2023] Reproducible builds with BuildKit for software supply chain ...
 
The internals and the latest trends of container runtimes
The internals and the latest trends of container runtimesThe internals and the latest trends of container runtimes
The internals and the latest trends of container runtimes
 
[KubeConEU2023] Lima pavilion
[KubeConEU2023] Lima pavilion[KubeConEU2023] Lima pavilion
[KubeConEU2023] Lima pavilion
 
[Container Plumbing Days 2023] Why was nerdctl made?
[Container Plumbing Days 2023] Why was nerdctl made?[Container Plumbing Days 2023] Why was nerdctl made?
[Container Plumbing Days 2023] Why was nerdctl made?
 
[FOSDEM2023] Bit-for-bit reproducible builds with Dockerfile
[FOSDEM2023] Bit-for-bit reproducible builds with Dockerfile[FOSDEM2023] Bit-for-bit reproducible builds with Dockerfile
[FOSDEM2023] Bit-for-bit reproducible builds with Dockerfile
 
[CNCF TAG-Runtime 2022-10-06] Lima
[CNCF TAG-Runtime 2022-10-06] Lima[CNCF TAG-Runtime 2022-10-06] Lima
[CNCF TAG-Runtime 2022-10-06] Lima
 
[KubeCon EU 2022] Running containerd and k3s on macOS
[KubeCon EU 2022] Running containerd and k3s on macOS[KubeCon EU 2022] Running containerd and k3s on macOS
[KubeCon EU 2022] Running containerd and k3s on macOS
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 
[Paris Container Day 2021] nerdctl: yet another Docker & Docker Compose imple...
[Paris Container Day 2021] nerdctl: yet another Docker & Docker Compose imple...[Paris Container Day 2021] nerdctl: yet another Docker & Docker Compose imple...
[Paris Container Day 2021] nerdctl: yet another Docker & Docker Compose imple...
 
[Docker Tokyo #35] Docker 20.10
[Docker Tokyo #35] Docker 20.10[Docker Tokyo #35] Docker 20.10
[Docker Tokyo #35] Docker 20.10
 
DockerとPodmanの比較
DockerとPodmanの比較DockerとPodmanの比較
DockerとPodmanの比較
 
[KubeCon NA 2020] containerd: Rootless Containers 2020
[KubeCon NA 2020] containerd: Rootless Containers 2020[KubeCon NA 2020] containerd: Rootless Containers 2020
[KubeCon NA 2020] containerd: Rootless Containers 2020
 
[DockerCon 2020] Hardening Docker daemon with Rootless Mode
[DockerCon 2020] Hardening Docker daemon with Rootless Mode[DockerCon 2020] Hardening Docker daemon with Rootless Mode
[DockerCon 2020] Hardening Docker daemon with Rootless Mode
 

Kürzlich hochgeladen

Effectively Troubleshoot 9 Types of OutOfMemoryError
Effectively Troubleshoot 9 Types of OutOfMemoryErrorEffectively Troubleshoot 9 Types of OutOfMemoryError
Effectively Troubleshoot 9 Types of OutOfMemoryErrorTier1 app
 
Understanding Plagiarism: Causes, Consequences and Prevention.pptx
Understanding Plagiarism: Causes, Consequences and Prevention.pptxUnderstanding Plagiarism: Causes, Consequences and Prevention.pptx
Understanding Plagiarism: Causes, Consequences and Prevention.pptxSasikiranMarri
 
Mastering Project Planning with Microsoft Project 2016.pptx
Mastering Project Planning with Microsoft Project 2016.pptxMastering Project Planning with Microsoft Project 2016.pptx
Mastering Project Planning with Microsoft Project 2016.pptxAS Design & AST.
 
GraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4j
GraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4jGraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4j
GraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4jNeo4j
 
Ronisha Informatics Private Limited Catalogue
Ronisha Informatics Private Limited CatalogueRonisha Informatics Private Limited Catalogue
Ronisha Informatics Private Limited Catalogueitservices996
 
Advantages of Cargo Cloud Solutions.pptx
Advantages of Cargo Cloud Solutions.pptxAdvantages of Cargo Cloud Solutions.pptx
Advantages of Cargo Cloud Solutions.pptxRTS corp
 
The Ultimate Guide to Performance Testing in Low-Code, No-Code Environments (...
The Ultimate Guide to Performance Testing in Low-Code, No-Code Environments (...The Ultimate Guide to Performance Testing in Low-Code, No-Code Environments (...
The Ultimate Guide to Performance Testing in Low-Code, No-Code Environments (...kalichargn70th171
 
The Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptx
The Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptxThe Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptx
The Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptxRTS corp
 
Best Angular 17 Classroom & Online training - Naresh IT
Best Angular 17 Classroom & Online training - Naresh ITBest Angular 17 Classroom & Online training - Naresh IT
Best Angular 17 Classroom & Online training - Naresh ITmanoharjgpsolutions
 
Strategies for using alternative queries to mitigate zero results
Strategies for using alternative queries to mitigate zero resultsStrategies for using alternative queries to mitigate zero results
Strategies for using alternative queries to mitigate zero resultsJean Silva
 
Large Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLarge Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLionel Briand
 
Pros and Cons of Selenium In Automation Testing_ A Comprehensive Assessment.pdf
Pros and Cons of Selenium In Automation Testing_ A Comprehensive Assessment.pdfPros and Cons of Selenium In Automation Testing_ A Comprehensive Assessment.pdf
Pros and Cons of Selenium In Automation Testing_ A Comprehensive Assessment.pdfkalichargn70th171
 
Keeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository worldKeeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository worldRoberto Pérez Alcolea
 
eSoftTools IMAP Backup Software and migration tools
eSoftTools IMAP Backup Software and migration toolseSoftTools IMAP Backup Software and migration tools
eSoftTools IMAP Backup Software and migration toolsosttopstonverter
 
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...OnePlan Solutions
 
SAM Training Session - How to use EXCEL ?
SAM Training Session - How to use EXCEL ?SAM Training Session - How to use EXCEL ?
SAM Training Session - How to use EXCEL ?Alexandre Beguel
 
Amazon Bedrock in Action - presentation of the Bedrock's capabilities
Amazon Bedrock in Action - presentation of the Bedrock's capabilitiesAmazon Bedrock in Action - presentation of the Bedrock's capabilities
Amazon Bedrock in Action - presentation of the Bedrock's capabilitiesKrzysztofKkol1
 
Enhancing Supply Chain Visibility with Cargo Cloud Solutions.pdf
Enhancing Supply Chain Visibility with Cargo Cloud Solutions.pdfEnhancing Supply Chain Visibility with Cargo Cloud Solutions.pdf
Enhancing Supply Chain Visibility with Cargo Cloud Solutions.pdfRTS corp
 
2024 DevNexus Patterns for Resiliency: Shuffle shards
2024 DevNexus Patterns for Resiliency: Shuffle shards2024 DevNexus Patterns for Resiliency: Shuffle shards
2024 DevNexus Patterns for Resiliency: Shuffle shardsChristopher Curtin
 
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...Bert Jan Schrijver
 

Kürzlich hochgeladen (20)

Effectively Troubleshoot 9 Types of OutOfMemoryError
Effectively Troubleshoot 9 Types of OutOfMemoryErrorEffectively Troubleshoot 9 Types of OutOfMemoryError
Effectively Troubleshoot 9 Types of OutOfMemoryError
 
Understanding Plagiarism: Causes, Consequences and Prevention.pptx
Understanding Plagiarism: Causes, Consequences and Prevention.pptxUnderstanding Plagiarism: Causes, Consequences and Prevention.pptx
Understanding Plagiarism: Causes, Consequences and Prevention.pptx
 
Mastering Project Planning with Microsoft Project 2016.pptx
Mastering Project Planning with Microsoft Project 2016.pptxMastering Project Planning with Microsoft Project 2016.pptx
Mastering Project Planning with Microsoft Project 2016.pptx
 
GraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4j
GraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4jGraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4j
GraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4j
 
Ronisha Informatics Private Limited Catalogue
Ronisha Informatics Private Limited CatalogueRonisha Informatics Private Limited Catalogue
Ronisha Informatics Private Limited Catalogue
 
Advantages of Cargo Cloud Solutions.pptx
Advantages of Cargo Cloud Solutions.pptxAdvantages of Cargo Cloud Solutions.pptx
Advantages of Cargo Cloud Solutions.pptx
 
The Ultimate Guide to Performance Testing in Low-Code, No-Code Environments (...
The Ultimate Guide to Performance Testing in Low-Code, No-Code Environments (...The Ultimate Guide to Performance Testing in Low-Code, No-Code Environments (...
The Ultimate Guide to Performance Testing in Low-Code, No-Code Environments (...
 
The Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptx
The Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptxThe Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptx
The Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptx
 
Best Angular 17 Classroom & Online training - Naresh IT
Best Angular 17 Classroom & Online training - Naresh ITBest Angular 17 Classroom & Online training - Naresh IT
Best Angular 17 Classroom & Online training - Naresh IT
 
Strategies for using alternative queries to mitigate zero results
Strategies for using alternative queries to mitigate zero resultsStrategies for using alternative queries to mitigate zero results
Strategies for using alternative queries to mitigate zero results
 
Large Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLarge Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and Repair
 
Pros and Cons of Selenium In Automation Testing_ A Comprehensive Assessment.pdf
Pros and Cons of Selenium In Automation Testing_ A Comprehensive Assessment.pdfPros and Cons of Selenium In Automation Testing_ A Comprehensive Assessment.pdf
Pros and Cons of Selenium In Automation Testing_ A Comprehensive Assessment.pdf
 
Keeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository worldKeeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository world
 
eSoftTools IMAP Backup Software and migration tools
eSoftTools IMAP Backup Software and migration toolseSoftTools IMAP Backup Software and migration tools
eSoftTools IMAP Backup Software and migration tools
 
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
 
SAM Training Session - How to use EXCEL ?
SAM Training Session - How to use EXCEL ?SAM Training Session - How to use EXCEL ?
SAM Training Session - How to use EXCEL ?
 
Amazon Bedrock in Action - presentation of the Bedrock's capabilities
Amazon Bedrock in Action - presentation of the Bedrock's capabilitiesAmazon Bedrock in Action - presentation of the Bedrock's capabilities
Amazon Bedrock in Action - presentation of the Bedrock's capabilities
 
Enhancing Supply Chain Visibility with Cargo Cloud Solutions.pdf
Enhancing Supply Chain Visibility with Cargo Cloud Solutions.pdfEnhancing Supply Chain Visibility with Cargo Cloud Solutions.pdf
Enhancing Supply Chain Visibility with Cargo Cloud Solutions.pdf
 
2024 DevNexus Patterns for Resiliency: Shuffle shards
2024 DevNexus Patterns for Resiliency: Shuffle shards2024 DevNexus Patterns for Resiliency: Shuffle shards
2024 DevNexus Patterns for Resiliency: Shuffle shards
 
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
 

[KubeCon EU 2021] Introduction and Deep Dive Into Containerd

  • 1. Kohei Tokunaga & Akihiro Suda, NTT Corporation Introduction and Deep Dive Into Containerd
  • 2. Introduction to containerd Kohei Tokunaga, NTT Corporation
  • 3. Overview ● CNCF graduated container runtime project ● Resource manager • Container process • Image artifacts • Filesystem snapshots • Metadata and dependencies management ● Tightly scoped (100% approval is required to stretch) but highly extensible ● Used by Kubernetes, Docker and various container-based projects https://github.com/containerd/containerd
  • 4. Usage in community ● Managed: GKE, AWS Fargate, AKS, IKS ● Development: Docker/moby, BuildKit ● K8s distribution: k3s, kind、minikube, kubespray, microk8s, k0s ● FaaS: faasd Adoption https://sysdig.com/blog/sysdig-2021-contai ner-security-usage-report/ ● Docker’s use of containerd + pure use of containerd is 83% of container usage (Sysdig 2021 container security and usage report) ● Used by several managed services as well as open source projects in community
  • 5. How containerd is used? Low-level runtime kubelet CRI Low-level runtime containerd API dockerd Low-level runtime containerd API Arbitrary tools As a CRI runtime As a component of Docker As a general container management tool
  • 6. Containerd as a CRI runtime Container Registry kubectl apply Detects Pod events Manages Pods using CRI runtime • Manages Pods, containers and images • Pulls image from the registry • Executes low-level runtimes Creates and manipulates isolated execution environments as containers e.g. runc, gVisor, Kata Containers Node Low-level runtime apiserver kubelet CRI pull The de facto standard CRI runtime for Kubernetes ● Managed Kubernetes: IKS, GKE, AKS, AWS Fargate, … ● Kubernetes distributions: K3s, kind, minikube, kubespray, microk8s, k0s, ...
  • 7. Containerd as a component of Docker Container Registry docker run Manages containers, images, networking and volumes, etc. Low-level runtime • Manages containers • Executes low-level runtimes containerd API dockerd Node pull/push Docker API Creates and manipulates isolated execution environments as containers e.g. runc, gVisor, Kata Containers
  • 8. Containerd as a general container management tool ● Several applications are developed based on containerd ● Containerd provides a Go client library (discussed later) ● Applications can extend containerd with plugins, without recompilation (discussed later) Applications managing containers Low-level runtime Provides container management functionality to upper tools containerd API BuildKit faasd Pouch Container nerdctl Creates and manipulates isolated execution environments as containers e.g. runc, gVisor, Kata Containers
  • 10. Containerd Architecture OS plugins container image tasks namespace leases version introspection events diff Server runtimes Client containerd API Kubelet CRI ● Client-server architecture • Go client library (used by Docker, BuildKit, etc.) ● Client calls server via containerd API • Through /run/containerd/containerd.sock ● Various low-level runtimes are supported • OCI runtimes (runc, gVisor, Kata Container, etc) • Firecracker (firecracker-containerd) ● Extensibility • Low-level plugins • Extending containerd API with custom services • Client library is easy to customize
  • 11. Containerd Client ● “Smart” Client (Go library) • Containerd API bindings • Registry client • Pulling/Pushing images • Image unpacker • Creating OCI config for OCI runtimes ● Go application can integrate with containerd using client library OS container image tasks namespace leases version introspection events diff container image Etc… namespace leases content snapshots events tasks Registry client Image unpacker events OCI config constructor Server plugins runtimes API bindings Utilities Utilities
  • 12. Containerd Client Implementations OS container image tasks namespace leases version introspection events diff Server plugins runtimes ctr, nerdctl, Docker, etc containerd API Client lib ● ctr: https://github.com/containerd/containerd • CLI client for containerd • Mainly for debugging or trying new features ● nerdctl: https://github.com/containerd/nerdctl • Docker-compatible CLI for containerd • Easy to use for Docker users • Supports containerd’s cutting-edge features (e.g. lazy pulling, image encryption) ● containerd-based tools • Arbitrary tools can integrate to containerd using client library • e.g. Docker, BuildKit, faasd
  • 13. Containerd Core & API container image etc… namespace leases content snapshots CRI tasks Metadata store OS Container management Image management Container execution Shared DB among services shim OCI CRI ● Micro services • Containerd API is the set of APIs of services • Services are loosely connected ● Shared metadata DB • bbolt-based • https://github.com/etcd-io/bbolt • Stores metadata of containers, images, contents, snapshots, etc. • Manages reference graph for GC
  • 14. CRI Service NRI Plugin Image Service Container Service Image service Runtime service Task Service CNI Plugin Containerd client ・・・ CNI client NRI client ● CRI service implements CRI of Kubernetes ● Implemented as a builtin service • Initially repo and binary were separated from containerd • Merged to containerd/containerd since 1.5 ● Depends on other services for container & image management • Communicates via function call ● Uses external CNI/NRI plugins for networking and resource management plugins kubelet CRI service Pod namespace container container Registry pull
  • 15. Low-level Services OS container image etc… namespace leases content snapshots CRI tasks C o n t e n t s t o r e S n a p s h o t t e r R u n t i m e ● Content Store • Stores image manifest and layers “as-is” • content addressable (keyed by digest) ● Snapshotter • Manages ”snapshots” • Extracted and stacked view of rootfs layers • Passed to OCI runtimes as rootfs • Snapshotter impl. per backing filesystem • Overlayfs, btrfs, aufs, FUSE, … ● Runtime • Executes low-level runtimes via “shim” • Shim is a wrapper daemon of OCI runtime • Well-suit to stateful runtimes (e.g. Kata Containers)
  • 16. Image content flow unpacker Content Store Diff Service Snapshotter Unpack layers extracted snapshots Task & Runtime Store layer blobs “as-is” Decompression Decryption etc… Mount snapshots as rootfs rootfs of a container remote container & task service API bindings ・・・ Registry pull containerd client utilities
  • 18. Extending containerd with plugins and services OS container image etc… namespace leases content snapshots CRI tasks shim OCI plugins plugins s h i m ● containerd is tightly scoped but highly extensible ● Custom low-level service; no need to recompile • external binary plugins • Plugin via unix socket (proxy snapshotter, proxy content store) • Plugin as an executable binary (stream processor, shim) • Go plugin ● API is extendable by implementing your own custom service • e.g. ”control API” of firecracker-containerd
  • 19. Extension example 1: Lazy pulling ● Remote snapshotter plugin • allows “lazy pulling” of images from arbitrary remote store (not limited to the registry) • container can startup without waiting for the entire image contents being locally available ● Snapshotter can run as an external daemon (proxy snapshotter) • No re-compilation is required • Containerd talks with the snapshotter via unix socket ● Stargz Snapshotter enables lazy pulling of OCI-compatible eStargz/Stargz images from standard registry • https://github.com/containerd/stargz-snapshotter Arbitrary remote store proce ss container Remote Snapshotter Node Provides rootfs snapshots as mount points Remote Snapshotters in community - Stargz Snapshotter - CVMFS-snapshotter - Nydus-snapshotter - OverlayBD-snapshotter
  • 20. Extension example 2: Generic image layers ● Containerd can handle arbitrary image layers, not limited to OCI standards • gzip, zstd, encrypted layers… ● Stream Processor plugin converts arbitrary media type to another (e.g. OCI standard types) ● Separated binary can plug into containerd, without re-compilation Stream Processor in community - imgcrypt for encrypted images e.g. layer decription Image layers Rootfs snapshots ・・・ Builtin decompressor Plugin binary Diff Service
  • 21. Extension example 3: Integrating low-level runtimes ● V2 Shim per low-level runtime ● Both of OCI (e.g. runc) and Non-OCI (e.g. Firecracker) runtime can integrate to containerd ● Binary naming convention: io.containerd.runc.v2 -> containerd-shim-runc-v2 ● Pluggable logging destination • fifo(Linux), npipe(Windows), external binary(Linux, Windows), file(Linux, Windows) runc Kata Containers gVisor Firecracker io.containerd.runc.v2 io.containerd.kata.v2 io.containerd.runsc.v1 io.containerd.aws-firecracker Low-level Runtimes in community V2 shims in community Runtime service
  • 22. Implementing your own containerd client Akihiro Suda, NTT Corporation
  • 23. Two APIs are available containerd API is recommended for most use cases, but CRI API might be easier to get started Implementing your own containerd client containerd API CRI API Consumers Docker/Moby, BuildKit, faasd, nerdctl... Kubernetes Paradigm Container-oriented Pod-oriented Flexibility Good Bad Simplicity Bad Good Transportation gRPC over UNIX socket gRPC over UNIX socket
  • 24. Implementing your own containerd client ● Both containerd API and CRI API use gRPC ● In theory you could use any language for your own client ● But containerd API depends on “smart client” written in Go, especially for pulling images ● So, currently, Go is the best language for Native API ● Contribution is wanted for other languages
  • 25. Implementing your own containerd client Example: https://containerd.io/docs/getting-started/
  • 26. Implementing your own containerd client Example: https://containerd.io/docs/getting-started/
  • 27. Implementing your own containerd client Example: https://containerd.io/docs/getting-started/ You will add WithXXX options here: - oci.WithProcessArgs - oci.WithMounts - oci.WithMemoryLimit - seccomp.WithProfile - ...
  • 28. Implementing your own containerd client In addition to the client, you will also want to implement OCI hooks and logger binary ● OCI Hooks: custom commands called on creation and deletion of containers ○ e.g., for setting up and tearing down CNI bridge and portmap ○ Optional, but necessary if you want your containers to be restarted automatically on host reboot ○ Example: https://github.com/containerd/nerdctl/blob/v0.7.2/run.go#L629-L663 ● Logger Binary: custom command for handling container logs ○ e.g., store as a local file, transfer to fluentd, … ○ Example: https://github.com/containerd/nerdctl/blob/v0.7.2/run.go#L618-L627
  • 29. Implementing your own containerd client Full example: nerdctl https://github.com/containerd/nerdctl Spun out from `ctr` tool with more practical features: - Automatic restarting - Port forwarding - Logging - Rootless - Stargz - OCIcrypt - … You may copy the code as the “starter pack” to create your own client :)
  • 30. containerd 1.5 updates and future plan Akihiro Suda, NTT Corporation
  • 31. containerd 1.5 updates (April) ● Support zstd as an image compression algorithm ○ Faster than gzip ○ https://facebook.github.io/zstd/ ● Support NRI: Node Resource Interface ○ Akin to CNI, but for managing resources, e.g., cgroup ○ https://github.com/containerd/nri ● Enable OCIcrypt decryption by default ○ Supported since 1.3, but it was not enabled by default ○ https://github.com/containers/ocicrypt https://github.com/containerd/imgcrypt ● nerdctl (contaiNERD ctl) joined containerd, as a non-core subproject ○ Docker-compatible CLI but with stargz and ocicrypt ○ https://github.com/containerd/nerdctl
  • 32. containerd 1.5 updates (April) ● The CRI plugin repo (github.com/containerd/cri) is now merged into the main repo (github.com/containerd/containerd) ○ No visible change to users, but significantly simplifies contribution process ● Client library is now available as a Go module
  • 33. Future plan ● Filesystem quota (#759) ● CRI support for user namespaces (KEP #2101) ○ Run Kubernetes pods as a user that is different from the daemon user ○ Akin to “Rootless Containers”, but different (and does not conflict, either) ● Chown-less user namespaces (#4734) ○ Requires idmapped mounts, introduced in kernel 5.12 ● Pause-less pod sandboxes (#4131) ● More documentation (help wanted! 🙏)
  • 34. Third party plugin updates ● Nydus Snapshotter https://github.com/dragonflyoss/image-service ○ Similar to Stargz Snapshotter but with a different image format ● OverlayBD Snapshotter https://github.com/alibaba/accelerated-container-image ○ Boot containers from iSCSI ● runu https://github.com/ukontainer/runu ○ Linux containers on macOS, using LKL (Linux Kernel Library) ● runj https://github.com/samuelkarp/runj ○ FreeBSD containers
  • 35. Recap ● The de facto standard runtime for Kubernetes, but not only for Kubernetes ● Extensible with plugins ○ Runtime plugins, e.g., gVisor, Kata ○ Snapshotter plugins, e.g., Stargz Snapshotter ○ Stream processor plugins, e.g., OCIcrypt ○ Logging binary plugins, e.g., json-file ○ ... ● New subproject: nerdctl (https://github.com/containerd/nerdctl) ○ Like `docker` but with full features of containerd ○ Like `ctr` but with full user experience of `docker` ○ nerdctl run -d -p 80:80 --restart=always nginx