Sathish Kumar
Sathish Kumar

Reputation: 2606

Kubernetes on Docker Desktop does not recognize local images

I am trying to deploy Windows Container image on the following software stack

Windows 10 Pro + Docker Desktop + Embedded Kubernetes in docker desktop

Due to some reason 'embedded kubernetes' does not recognize 'local images' no matter whatever --image-pull-policy was set

Docker images

PS C:\WINDOWS\system32> docker images
REPOSITORY                             TAG        IMAGE ID       CREATED        SIZE
myimg                                  final      90c09acbfc59   15 hours ago   5.45GB

Kubectl run

PS C:\WINDOWS\system32> kubectl run --image=myimg:final tskuberun

Pod output

Events:
  Type     Reason     Age                From               Message
  ----     ------     ----               ----               -------
  Normal   Scheduled  25s                default-scheduler  Successfully assigned default/tskuberun to docker-desktop
  Normal   BackOff    23s (x2 over 24s)  kubelet            Back-off pulling image "myimg:final"
  Warning  Failed     23s (x2 over 24s)  kubelet            Error: ImagePullBackOff
  Normal   Pulling    9s (x2 over 25s)   kubelet            Pulling image "myimg:final"
  Warning  Failed     8s (x2 over 25s)   kubelet            Failed to pull image "myimg:final": rpc error: code = Unknown desc = Error response from daemon: Get https://registry-1.docker.io/v2/: dial tcp: lookup registry-1.docker.io on 192.168.65.5:53: no such host
  Warning  Failed     8s (x2 over 25s)   kubelet            Error: ErrImagePull

However, when I execute docker run it pulled the local image. Following worked as expected

PS C:\WINDOWS\system32> docker run myimg:final

I googled for the answer but most of the links were related to Unix flavors and Minikube.

Only few links were related to Docker desktop + embedded kubernetes, but unfortunately none resolved the issue

I am struggling to get rid of this issue. Any help is highly appreciated

EDIT

On further investigation, I observed that 'Docker desktop' refers to local images in case had I selected option "Switch to Linux Containers"

Kubectl run for Linux image

PS C:\WINDOWS\system32> kubectl run --image=wphp --image-pull-policy=IfNotPresent lntest


PS C:\WINDOWS\system32> kubectl describe pod/lntest

Events:
  Type     Reason     Age               From               Message
  ----     ------     ----              ----               -------
  Normal   Scheduled  40s               default-scheduler  Successfully assigned default/lntest to docker-desktop
  Normal   Pulled     2s (x4 over 39s)  kubelet            Container image "wphp" already present on machine
  Normal   Created    2s (x4 over 39s)  kubelet            Created container lntest
  Normal   Started    2s (x4 over 39s)  kubelet            Started container lntest

It appears that this issue occurs only for 'Windows containers' ie Docker desktop does NOT refer local images had I selected option 'Switch to Windows Containers'

Upvotes: 2

Views: 3623

Answers (2)

Pierre
Pierre

Reputation: 1963

Allthough imagePullPolicy: never should do the trick for you, there could be some certificate related issues.

Personally I avoided using locally built Docker images because of those issues.

You can try to integrate docker push to docker hub in your workflow or build a docker registry in your kubernetes cluster e.g. using https://www.linuxtechi.com/setup-private-docker-registry-kubernetes/

Upvotes: 4

coderanger
coderanger

Reputation: 54267

The VM used by Docker Desktop is unable to access the internet. You'll have to sort out that networking.

Upvotes: 0

Related Questions