How to fix container runtime is not running in Kubernetes
The container runtime (Docker, containerd, or cri-o) is not running on your node, preventing kubelet from starting Pods.
Quick fix
Fixes container runtime is not running
which docker
which containerd
which cri-o
# Check kubelet config to see which is expected
cat /etc/kubernetes/kubelet.conf | grep -i "container-runtime"- Check which runtime is installed
- Verify runtime service is running
- Test runtime connectivity
- Install runtime if missing
which dockerwhich containerdwhich cri-o# Check kubelet config to see which is expectedcat /etc/kubernetes/kubelet.conf | grep -i "container-runtime"container runtime is not running
What this error means
Kubernetes relies on a container runtime to manage container lifecycle. Without a running container runtime, kubelet cannot create, start, or manage Pods. This error typically appears during node setup or when the runtime crashes.
Typical symptoms
- kubeadm join fails with "container runtime not running"
- kubelet cannot start Pods
- Node shows NotReady status
- Container runtime service is stopped
- Error: "cannot connect to the Docker daemon"
- ImagePullBackOff errors on all Pods
Common causes
- Container runtime was not installed
- Runtime service was stopped or crashed
- Runtime socket is not accessible (permissions)
- Runtime configuration is broken
- Out of disk space preventing runtime operation
- Dependency service (like cgroup) is not available
How to fix "container runtime is not running"
List installed runtimes:
which docker
which containerd
which cri-o
# Check kubelet config to see which is expected
cat /etc/kubernetes/kubelet.conf | grep -i "container-runtime"Check and restart the runtime:
sudo systemctl status docker # or containerd/cri-o
sudo systemctl start docker
sudo systemctl enable dockerVerify the runtime socket is accessible:
# For Docker
sudo docker ps
# For containerd
sudo ctr containers list
# For cri-o
sudo podman psFor containerd (recommended for kubeadm):
sudo apt-get update
sudo apt-get install -y containerd.io
sudo mkdir -p /etc/containerd
containerd config default | sudo tee /etc/containerd/config.toml
sudo systemctl restart containerdAfter runtime is ready:
sudo systemctl restart kubelet
kubectl get nodes
# Wait for NotReady -> Ready transition
kubectl get nodes -wAdvanced notes
Kubeadm officially supports containerd, cri-o, and Docker (deprecated in newer versions). Use containerd for new clusters. Ensure the kubelet socket path matches the runtime socket: /var/run/containerd/containerd.sock (containerd) or /var/run/crio/crio.sock (cri-o). Monitor runtime resource usageโif running out of disk or memory, the runtime may crash.
Frequently asked questions
- What does "container runtime is not running" mean?
- Kubernetes relies on a container runtime to manage container lifecycle. Without a running container runtime, kubelet cannot create, start, or manage Pods. This error typically appears during node setup or when the runtime crashes.
- How do I fix "container runtime is not running"?
- The container runtime (Docker, containerd, or cri-o) is not running on your node, preventing kubelet from starting Pods.
- What causes "container runtime is not running"?
- Container runtime was not installed Runtime service was stopped or crashed Runtime socket is not accessible (permissions)
- Is the "container runtime is not running" error serious?
- Yes. This is a critical-severity error that usually blocks work until it is fixed, but the steps above resolve it.
Official resources & further reading
- ๐Kubernetes Official Documentation
- ๐Kubernetes: Container Runtimes(Official Docs)
- ๐Kubernetes: Kubeadm Installation(Official Docs)
- ๐Containerd: Documentation(Official Docs)