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

CLI tools

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

Command equivalents

Operationdockerpodmannerdctlcrictl
Builddocker buildpodman buildnerdctl build:
Save image tardocker savepodman savenerdctl save:
Load image tardocker loadpodman loadnerdctl load:
Tagdocker tagpodman tagnerdctl tag:
Pushdocker pushpodman pushnerdctl push:
Pulldocker pullpodman pullnerdctl pullcrictl pull
Rundocker runpodman runnerdctl runcrictl run
Listdocker pspodman psnerdctl pscrictl ps
Logsdocker logspodman logsnerdctl logscrictl logs
Execdocker execpodman execnerdctl execcrictl exec
  • Image build/save/load/tag/push → docker, podman, or nerdctl on exam workstation
  • Inspect pods on cluster nodes → crictl (CRI-level, not for building images)

Exam gotchas

  • crictl run creates containers not managed by kubelet: GC removes them; inspection only
  • On worker nodes: crictl; on exam desktop: docker, podman, or nerdctl for image tasks
  • K8s 1.24+ has no Docker shim; exam may still ship a docker CLI (often aliased to podman)
  • OCI image tar from docker save works with podman load and vice versa