Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to use local docker images with Minikube?

I have several docker images that I want to use with minikube. I don't want to first have to upload and then download the same image instead of just using the local image directly. How do I do this?

Stuff I tried:
1. I tried running these commands (separately, deleting the instances of minikube both times and starting fresh)

kubectl run hdfs --image=fluxcapacitor/hdfs:latest --port=8989 kubectl run hdfs --image=fluxcapacitor/hdfs:latest --port=8989 imagePullPolicy=Never 

Output:

NAME                    READY     STATUS              RESTARTS   AGE hdfs-2425930030-q0sdl   0/1       ContainerCreating   0          10m 

It just gets stuck on some status but never reaches the ready state.


2. I tried creating a registry and then putting images into it but that didn't work either. I might've done that incorrectly but I can't find proper instructions to do this task.

Please provide instructions to use local docker images in local kubernetes instance.
OS: ubuntu 16.04
Docker : Docker version 1.13.1, build 092cba3
Kubernetes :

Client Version: version.Info{Major:"1", Minor:"5", GitVersion:"v1.5.3", GitCommit:"029c3a408176b55c30846f0faedf56aae5992e9b", GitTreeState:"clean", BuildDate:"2017-02-15T06:40:50Z", GoVersion:"go1.7.4", Compiler:"gc", Platform:"linux/amd64"} Server Version: version.Info{Major:"1", Minor:"5", GitVersion:"v1.5.2", GitCommit:"08e099554f3c31f6e6f07b448ab3ed78d0520507", GitTreeState:"clean", BuildDate:"1970-01-01T00:00:00Z", GoVersion:"go1.7.1", Compiler:"gc", Platform:"linux/amd64"} 

If someone could help me get a solution that uses docker-compose to do this, that'd be awesome.

Edit:

Images loaded in eval $(minikube docker-env:

REPOSITORY                                            TAG                 IMAGE ID            CREATED             SIZE fluxcapacitor/jupyterhub                              latest              e5175fb26522        4 weeks ago         9.59 GB fluxcapacitor/zeppelin                                latest              fe4bc823e57d        4 weeks ago         4.12 GB fluxcapacitor/prediction-pmml                         latest              cae5b2d9835b        4 weeks ago         973 MB fluxcapacitor/scheduler-airflow                       latest              95adfd56f656        4 weeks ago         8.89 GB fluxcapacitor/loadtest                                latest              6a777ab6167c        5 weeks ago         899 MB fluxcapacitor/hdfs                                    latest              00fa0ed0064b        6 weeks ago         1.16 GB fluxcapacitor/sql-mysql                               latest              804137671a8c        7 weeks ago         679 MB fluxcapacitor/metastore-1.2.1                         latest              ea7ce8c5048f        7 weeks ago         1.35 GB fluxcapacitor/cassandra                               latest              3cb5ff117283        7 weeks ago         953 MB fluxcapacitor/apachespark-worker-2.0.1                latest              14ee3e4e337c        7 weeks ago         3.74 GB fluxcapacitor/apachespark-master-2.0.1                latest              fe60b42d54e5        7 weeks ago         3.72 GB fluxcapacitor/package-java-openjdk-1.8                latest              1db08965289d        7 weeks ago         841 MB gcr.io/google_containers/kubernetes-dashboard-amd64   v1.5.1              1180413103fd        7 weeks ago         104 MB fluxcapacitor/stream-kafka-0.10                       latest              f67750239f4d        2 months ago        1.14 GB fluxcapacitor/pipeline                                latest              f6afd6c5745b        2 months ago        11.2 GB gcr.io/google-containers/kube-addon-manager           v6.1                59e1315aa5ff        3 months ago        59.4 MB gcr.io/google_containers/kubedns-amd64                1.9                 26cf1ed9b144        3 months ago        47 MB gcr.io/google_containers/kube-dnsmasq-amd64           1.4                 3ec65756a89b        5 months ago        5.13 MB gcr.io/google_containers/exechealthz-amd64            1.2                 93a43bfb39bf        5 months ago        8.37 MB gcr.io/google_containers/pause-amd64            
like image 942
Kapil Gupta Avatar asked Mar 02 '17 19:03

Kapil Gupta


People also ask

Can Kubernetes use a local docker image?

Kubernetes use local docker image is nothing but create Kubernetes image locally and deploy the same on Kubernetes cluster locally; the first step is to deploy our application on Kubernetes to build the docker image. Next, we need to use minikube to run the Kubernetes in our local environment.

How do I add an image to minikube?

Push images using 'cache' command. The add command will store the requested image to $MINIKUBE_HOME/cache/images , and load it into the minikube cluster's container runtime environment automatically.


Video Answer


2 Answers

As the README describes, you can reuse the Docker daemon from Minikube with eval $(minikube docker-env).

So to use an image without uploading it, you can follow these steps:

  1. Set the environment variables with eval $(minikube docker-env)
  2. Build the image with the Docker daemon of Minikube (eg docker build -t my-image .)
  3. Set the image in the pod spec like the build tag (eg my-image)
  4. Set the imagePullPolicy to Never, otherwise Kubernetes will try to download the image.

Important note: You have to run eval $(minikube docker-env) on each terminal you want to use, since it only sets the environment variables for the current shell session.

like image 166
svenwltr Avatar answered Sep 28 '22 22:09

svenwltr


What worked for me, based on the solution by @svenwltr:

# Start minikube minikube start  # Set docker env eval $(minikube docker-env)             # unix shells minikube docker-env | Invoke-Expression # PowerShell  # Build image docker build -t foo:0.0.1 .  # Run in minikube kubectl run hello-foo --image=foo:0.0.1 --image-pull-policy=Never  # Check that it's running kubectl get pods 
like image 21
jjinking Avatar answered Sep 28 '22 21:09

jjinking