如何在Minikube中使用本地Docker镜像?

637

我有几个 Docker 镜像,想要在 minikube 中使用。我不想先上传并下载相同的镜像,而是直接使用本地镜像。如何做到这一点?

我尝试过的方法:
1. 我尝试运行以下命令(分别运行,两次删除 minikube 实例并重新开始)

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

输出:

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

它只是卡在某个状态上,但从未达到就绪状态。


2. 我尝试创建一个注册表,然后将图像放入其中,但那也没有起作用。 我可能做错了那个步骤,但我找不到正确的说明来完成此任务。

请提供使用本地docker映像的说明以在本地kubernetes实例中使用。
操作系统:ubuntu 16.04
Docker:Docker版本1.13.1,构建编号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"}

如果有人能帮我使用docker-compose解决这个问题,那就太棒了。

编辑:

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           

为什么最后一行的最后四列没有数值? - undefined
好的,OP已经离开了这个地方:"上次出现是在6年前"。 - undefined
33个回答

-1

大多数答案已经很好了。 但我面临的一个重要问题是,如果您正在使用BuildKit

(DOCKER_BUILDKIT=1)

那么在执行eval $(minkube docker-env)后创建的镜像将不会进入minikube docker引擎。 相反地它将进入本地的docker引擎。

因此,如果您正在使用以下内容,请删除任何引用

-mount=type=cache,target=/root/.m2


-1

如果我理解正确,您有本地图像,可能通过 USB 传递,并希望在 minikube 中加载它?

只需像这样加载图像: minikube image load my-local-image:0.1

有了这个,在 Kubernetes 的 yaml 文件中,您可以将 imagePullPolicy 更改为 Never,因为您刚刚在 minikube 中加载了它,所以它会被找到。

我曾经遇到过这个问题,采用了这种方法,而且成功了。


1
这将把图像从本地复制到minikube。需要注意的是,当加载时,本地上的20GB图像将在minikube内分配另外20GB空间。在我的情况下,了解为什么要在本地构建图像而不是在Minikube内部构建将会很有用。 - Kamafeather

-1

我从ClickHouse Operator Build From Sources找到了这种方法,它非常有帮助,拯救了我的生命!

docker save altinity/clickhouse-operator | (eval $(minikube docker-env) && 
docker load)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接