Docker to k8s Cheat Sheet
The full concept map. When lost, find the Docker thing you know and look right.
Concepts
| Docker concept | Kubernetes equivalent |
|---|---|
docker run | Pod (lowest unit, wraps 1+ containers) |
docker compose service | Deployment |
docker compose file | A set of YAML manifests (or a Helm chart / Kustomize base) |
| compose project | Namespace |
| compose networks / service names | Service (ClusterIP) + cluster DNS |
-p 8080:80 | Service (NodePort/LoadBalancer) or Ingress |
| named volumes | PersistentVolumeClaim (+ StorageClass) |
| bind mounts | hostPath (avoid) or ConfigMap mounts for config files |
.env / environment: | ConfigMap + Secret |
restart: always | Built-in - controllers reschedule pods |
healthcheck: | Liveness/readiness/startup probes |
depends_on | Nothing - readiness probes + retry logic in the app |
docker run from cron | Job / CronJob |
deploy.resources | resources.requests / resources.limits |
| swarm replicas | Deployment replicas + HorizontalPodAutoscaler |
Commands
| Docker command | kubectl equivalent |
|---|---|
docker ps | kubectl get pods |
docker inspect <c> | kubectl describe pod <p> |
docker logs -f <c> | kubectl logs -f <p> |
docker exec -it <c> sh | kubectl exec -it <p> -- sh |
docker compose up -d | kubectl apply -f . |
docker compose down | kubectl delete -f . |
docker stats | kubectl top pods (needs metrics-server) |
docker compose restart x | kubectl rollout restart deployment/x |
Failure states quick reference
| State | Most common cause |
|---|---|
ImagePullBackOff | Tag typo, private registry auth, missing image |
CrashLoopBackOff | App dies on boot - check logs --previous |
Pending | No node with enough resources, or PVC unbound |
OOMKilled | Memory limit too low (or a real leak) |
Ready 0/1 | Readiness probe failing |