Pulling image from local docker insecured Docker registry to Kubernetes

1/16/2017

Cannot pull image from local docker insecured registry repository inside Minikube.

I'm running Docker-toolbox v1.12.2 using Linux VM (Upstart) installed on Oracle VirtualBox 5.1.6 under Windows 7.

I've created a docker image and push (tag and then push) it into a local insecured docker-registry v2 that running on 192.168.99.100:5000/image/name.
docker run -d -p 5000:5000 --restart=always --name registry registry:2
and inside the VM, on /var/lib/boot2docker/profile I've add to the EXTRA_ARGS the flag
--insecure-registry 192.168.99.100:5000 .

docker push & docker pull from localhost:5000/image/name are working fine within Docker(VM).

_catalog is reachable from Postman :GET http:192.168.99.100:5000/v2/_catalog and I'm able to get the images inside the registry.

I'm starting my Minikube v0.15.0 VM with the command:

minikube start --insecure-registry=192.168.99.100:5000

I'm under company PROXY so I've added the proxy in the command line (CMD):
set HTTP/HTTPS_PROXY=my.company.proxy:8080 and set NO_PROXY={minikube ip}.
Then Kubernetes dashboard started to work for me.

Now for the real problem, when running the command:
kubectl run image-name --image=192.168.99.100:5000/image/name --port=9999 to pull image from my local docker registry into Kubernetes its saying

deployment "image-name" created

But inside Kubernetes > Deployments I'm getting the following error:

Failed to pull image "192.168.99.109:5000/image/name": image pull failed for 192.168.99.100:5000/image/name:latest, this may be because there are no credentials on this request. details: (Error response from daemon: Get https://192.168.99.100:5000/v1/_ping: Tunnel or SSL Forbidden)

Can anyone help here with that Tunnel or SSL Forbidden error, it's driving me crazy, and I've tried so many solutions to configure --insecrue-registery inside docker, inside Kubernetes or when running the dokcer-registry.

BTW why it's refering to v1/_ping? i'm using the docker registry v2.

-- yuval simhon
docker
docker-registry
docker-toolbox
kubernetes
minikube

1 Answer

1/18/2017

Seems like minikube cannot see the same network that your registry is running. Can you try running minikube ssh then run your curl for the catalog?

Also, as an alternative, you could run eval(minikube docker-env) which then will set your local docker client to use the docker server inside minikube.

So for example if you built an image tagged with myimage/foo it would build and put that image on the minikube docker host, so when you deployed the image, it wouldn't need to be pulled.

-- Steve Sloka
Source: StackOverflow