Skip to content
Rahul Shishodiaon GitHub LinkedIn profile

Docker vs containerd

  • K8s 1.20: Docker runtime deprecated
  • K8s 1.24: Docker runtime removed
  • CRI: standard API; any compliant runtime plugs in; containerd is default on most clusters
  • OCI image format unchanged: docker build / push still works; cluster runs via containerd, not Docker daemon

CLI tools

ToolUse
ctrLow-level containerd: debugging only
nerdctlDocker-compatible CLI for containerd: dev machine
crictlCRI-level: inspect/debug on K8s nodes

Command equivalents

Operationdockernerdctlcrictl
Rundocker runnerdctl runcrictl run
Listdocker psnerdctl pscrictl ps
Pulldocker pullnerdctl pullcrictl pull
Logsdocker logsnerdctl logscrictl logs
Execdocker execnerdctl execcrictl exec

Exam tips

  • crictl run creates containers not managed by kubelet: GC removes them; use for inspection only
  • On worker nodes: crictl; on laptop: nerdctl or Docker for builds