saschagrunert
mail@
.de
historic background
runc
CRI-O
systemd-nspawn, NixOS containers
CRI-O, Kata Containers, Firecracker, gVisor, containerd, LXC, runc, Nabla Containers
2008
Linux Containers (LXC)
cgroup and namespace technologies for
isolated applications
API driven configuration
hiding the internals of cgroups
2013
package containers into images
containers should be a standard software unit
main container management part of docker
LMCTFY benefits migrated into libcontainer
2015
API for developing container runtimes
direct interface to libcontainer
used by CRI-O, podman, containerd (Docker), ...
OCI configuration is described as JSON
runc is a low-level container runtime
security features already supported:
AppArmor, seccomp, SELinux
rootless mode possible
2016
standard API for container runtimes
Kubelet connects via gRPC to the container runtime
// Runtime service defines the public APIs for remote container runtimes
service RuntimeService {
rpc CreateContainer (...) returns (...) {}
rpc ListContainers (...) returns (...) {}
rpc RemoveContainer (...) returns (...) {}
rpc StartContainer (...) returns (...) {}
rpc StopContainer (...) returns (...) {}
rpc ListPodSandbox (...) returns (...) {}
rpc RemovePodSandbox(...) returns (...) {}
rpc RunPodSandbox (...) returns (...) {}
rpc StopPodSandbox (...) returns (...) {}
}
Workload creation in Kubernetes starts with PodSandbox setup
https://github.com/
saschagrunert/demystifying-containers