Kubernetes cannot pull image from private docker image repository Kubernetes cannot pull image from private docker image repository kubernetes kubernetes

Kubernetes cannot pull image from private docker image repository


For minikube to pull from your own local docker registry, the tag affects the pull policy. Per Images docs, pull policy is IfNotPresent by default EXCEPT if

  1. you use :latest as the tag for the image to use
  2. OR you omit the tag for the image to use.

In those cases the pull policy will effectively default to Always, which will attempt to pull from docker hub. This will cause minikube to be unable to fetch local images that have no tag or "latest" tag.

Moral of the story is, don't rely on the default because it is too confusing :)

So always explicitly state the pull policy:

  1. when deploying into minikube the pull policy should beIfNotPresent or Never for the local images
  2. when deploying into a cloud host (like AWS), pull policy should be as for public images (see below)
  3. the pull policy should be Always for those public images that use a tag like "latest" or "stable" (because the image the tagpoints will change over time), and IfNotPresent for tags thatalways point to the same image (to avoid fetching more thannecessary)

This means that if you avoid using tags like latest and stable etc, there is only one rule to follow:

  1. explicitly set the imagePullPolicy in your spec (or on the command line in the case of run) to IfNotPresent, as this is will always look for it locally first, and go to public registry if it is not found locally, and this will work whether or not you are deploying into minikube or cloud.


The problem is with the image pull policy - you have set this to Always (the default setting). This means that the Docker deamon always tries to pull the image from the outer Docker registry - you want to use the local one instead.

Try to add --image-pull-policy=Never when creating a deployment.

A good tutorial of using locally created images is here (it helped me):

https://kubernetes.io/docs/tutorials/hello-minikube/#create-a-docker-container-image


Because Minikube is VM not a your localhost.You try this code eval $(minikube docker-env)https://kubernetes.io/docs/getting-started-guides/minikube/

  1. Open Terminal
  2. eval $(minikube docker-env)
  3. docker build .
  4. kubectl create -f deployment.yaml

just valid this terminal.if closed terminal again open terminal and write eval $(minikube docker-env)

eval $(minikube docker-env) this code build image in Minikube