How to fix container runtime is not running in Kubernetes

KubernetesINTERMEDIATECRITICALUpdated Dec 6, 2025ยท 203 views

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"
  1. Check which runtime is installed
  2. Verify runtime service is running
  3. Test runtime connectivity
  4. Install runtime if missing
kubernetes โ€” error
which docker
which containerd
which cri-o
# Check kubelet config to see which is expected
cat /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

  1. Container runtime was not installed
  2. Runtime service was stopped or crashed
  3. Runtime socket is not accessible (permissions)
  4. Runtime configuration is broken
  5. Out of disk space preventing runtime operation
  6. Dependency service (like cgroup) is not available

How to fix "container runtime is not running"

1Check which runtime is installed

List installed runtimes:

bash
which docker
which containerd
which cri-o

# Check kubelet config to see which is expected
cat /etc/kubernetes/kubelet.conf | grep -i "container-runtime"
2Verify runtime service is running

Check and restart the runtime:

bash
sudo systemctl status docker     # or containerd/cri-o
sudo systemctl start docker
sudo systemctl enable docker
3Test runtime connectivity

Verify the runtime socket is accessible:

bash
# For Docker
sudo docker ps

# For containerd
sudo ctr containers list

# For cri-o
sudo podman ps
4Install runtime if missing

For containerd (recommended for kubeadm):

bash
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 containerd
5Restart kubelet and verify

After runtime is ready:

bash
sudo systemctl restart kubelet
kubectl get nodes
# Wait for NotReady -> Ready transition
kubectl get nodes -w

Advanced 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