Podman vs Cri-o vs Containerd
I have always used docker
to build my images.
Docker pretty much did all things and contained various parts:
Docker engine
: powers docker locally - a portable, lightweight runtime and packaging toolDocker hub
: cloud service to share imagesdocker compose
: mechanism to define and run multi-container applicationsdocker swarm
: container orchestration for productiondocker registry
: server side application that stores and lets you distribute Docker imagesdocker machine
: tool that lets you install Docker Engine on virtual hosts and manage hosts
The part that does the image building from a Dockerfile
is the docker engine
.
There was corporate action - docker was acquired by Mirantis - and that shook up the industry.
It was noted that: Kubernetes is deprecating support for Docker as a container runtime starting with Kubernetes version 1.20.
A CRI (Container Runtime Interface) is a a standard way of communicating between Kubernetes and the container runtime.
Docker does not implement a CRI and a docker shim was created by kubernetes to support it.
Docker is a collection of tools that sit on top of containerd
Docker makes the process easier of using the containerd
runtime.
If you are using docker as teh container runtime on kubernetes you will need to remove the middleman.
Confusion: Container Runtime vs Container Engine#
When reading the podman docs they refer to:
- Container engines: Docker, CRI-O, containerd
- Container runtimes: runc, crun, runv
Podman vs Cri-o vs Containerd#
So we know now that Docker is not a container runtime and uses containerd behind the scenes.