kind cluster - how to see docker-images that are loaded?
System Design practice on Codemia
Work through 120+ system design problems with detailed solutions, from rate limiters to multi-region storage.
Introduction
Kind (Kubernetes IN Docker) runs Kubernetes clusters using Docker containers as nodes. Since Kind nodes are Docker containers themselves, images loaded into a Kind cluster are not visible with docker images on the host. To see images inside a Kind cluster, use docker exec to run crictl images inside the node container, or use kind load docker-image to load local images and then verify with crictl. Understanding this separation between the host Docker daemon and the Kind node's container runtime is key to debugging image pull issues.
Loading Images into Kind
Kind nodes use containerd as their container runtime, not the host's Docker daemon. You must explicitly load images from the host into the cluster:
After loading, the image is available inside the Kind node's containerd storage, and Kubernetes can pull it with imagePullPolicy: Never or imagePullPolicy: IfNotPresent.
Viewing Images Inside a Kind Cluster
Method 1: crictl images (Recommended)
Method 2: ctr (containerd CLI)
Method 3: kubectl (Indirect)
Loading from a tar Archive
If you have images saved as tar files:
This is useful in CI/CD pipelines where images are built in one step and loaded in another.
Kubernetes Deployment with Local Images
When using locally loaded images, set imagePullPolicy to avoid pulling from a remote registry:
If you omit imagePullPolicy: Never, Kubernetes defaults to Always for :latest tags, causing ErrImagePull since the image is not in any remote registry.
Using a Local Registry Instead
For development workflows with frequent image changes, a local registry avoids repeated kind load:
Multi-Node Clusters
In multi-node Kind clusters, kind load docker-image loads the image into all nodes:
Common Pitfalls
- Running
docker imageson the host to find Kind images: Images loaded into Kind are stored inside the node container's containerd, not the host Docker daemon. Usedocker exec <node> crictl imagesto list them. - Forgetting
imagePullPolicy: Neverfor local images: Kubernetes defaults toimagePullPolicy: Alwaysfor:latesttags. WithoutNeverorIfNotPresent, Kubernetes tries to pull from a remote registry and fails withErrImagePull. - Loading images before the cluster is created:
kind load docker-imagerequires a running cluster. Create the cluster withkind create clusterfirst, then load images. - Image name mismatch between load and deployment: The image name in
kind load docker-image my-app:v1must exactly match theimage:field in the Kubernetes manifest, including the tag. A mismatch causesImagePullBackOff. - Not rebuilding before reloading:
kind load docker-imageloads the current image from the host Docker daemon. If you change code, you mustdocker buildagain before runningkind load— it does not automatically rebuild.
Summary
- Use
kind load docker-image <name>to load local Docker images into a Kind cluster - View loaded images with
docker exec -it <node-name> crictl images - Set
imagePullPolicy: Neverin Kubernetes manifests for locally loaded images - Use
kind load image-archivefor tar-based image loading in CI/CD pipelines - For frequent development cycles, set up a local Docker registry connected to the Kind network
Related reading
- Kong Ingress Controller - Remove Kong related headers
- kOps 1.19 reports error Unauthorized when interfacing with AWS cluster
- kube-prometheus-stack issue scraping metrics
- kubeadm init shows kubelet isn't running or healthy
- kubectl apply vs kubectl create?
- kubectl attach Unable to use a TTY - container es-node did not allocate one
- Kubectl command to return a list of all user accounts from Kubernetes
- Kubectl create for persistent storage erroring out

System Design Fundamentals
Build a strong foundation in designing scalable, reliable distributed systems.
View the courseTrack what you have practised
A free account saves your progress, solutions and study plan across every problem on Codemia.
System Design practice on Codemia
Work through 120+ system design problems with detailed solutions, from rate limiters to multi-region storage.