Схема заимодействия контейнерных технологий в рамках работы с привычными инструментами может быть представлена следующим образом:

Утилита podman с помощью Libpod API обращается к библиотеке libpod, которая вызывает низкоуровневый container runtime (по умолчанию утилиту runc)
containers/podman
Podman CommandsУтилита docker с помощью Docker API вызывает сервис dockerd
docker/cli
Docker CLI reference
Docker architecture
Docker APIСервис dockerd вызывает сервис containerd
Dockerd referenceСервис containerd вызывает низкоуровневый container runtime (по умолчанию утилиту runc)
containerd/containerd
Containerd Scope and principlesСервис kubelet с помощью протокола CRI вызывает сервис container runtime (например, containerd или crio)
Container Runtime Interface
Container Runtimes
CRI: the Container Runtime InterfaceСервис containerd вызывает низкоуровневый container runtime (по умолчанию runc)
Containerd CRIСервис cri-o вызывает низкоуровневый container runtime (по умолчанию runc)
cri-o/cri-oУтилита OCI container runtime (по умолчанию runc):
runc с помощью библиотеки libcontainer создает контейнер по runtime-spec, взаимодействуя с подсистемами ядра Linux – пространствами имен (namespaces) и контрольными группами (cgroups)
opencontainers/runc
runc man
opencontainers/runc/libcontainercrun создает контейнер по runtime-spec, взаимодействуя с подсистемами ядра Linux – пространствами имен (namespaces) и контрольными группами (cgroups)
containers/crun