OCI runtimes are responsible for interactive with the kernel
They implement the OCI runtime spec
They are pluggable
Reference implementation by OCI (Go): runc
Lightweight implementation by RedHat (C): crun
Application kernel by Google (Go): gvisor
Lightweight VMs using QEMU/KVM (Go): kata-containers
Micro VMs by AWS (Rust): Firecracker
Application kernel that…
“implements a substantial portion of the Linux system call interface”
Ships with…
runsc
containerd-shim-runsc-v1
Google provides a detailed analysis
Comparison to…
Hardware virtualization
Syscall filtering using seccomp, SELinux and AppArmor
Application kernel
Intercepts system calls
Starts in container w/ seccomp
Host process for every container
Talks to Sentry using 9P
gvisor in Kubernetes