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

新手上路,请多包涵

我有几个要与 minikube 一起使用的 docker 映像。我不想先上传然后下载相同的图像,而不是直接使用本地图像。我该怎么做呢?

我试过的东西:

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. 我尝试创建一个注册表,然后将图像放入其中,但也没有用。我可能做错了,但我找不到执行此任务的正确说明。

请提供在本地 kubernetes 实例中使用本地 docker 镜像的说明。

操作系统: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

原文由 Kapil Gupta 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 982
2 个回答

手册 所述,您可以使用 eval $(minikube docker-env) 重用 Minikube 中的 Docker 守护程序。

因此,要在不上传图片的情况下使用图片,您可以按照以下步骤操作:

  1. 设置环境变量 eval $(minikube docker-env)
  2. 使用 Minikube 的 Docker 守护进程构建镜像(例如 docker build -t my-image .
  3. 像构建标签一样在 pod 规范中设置图像(例如 my-image
  4. imagePullPolicy 设置为 Never ,否则 Kubernetes 会尝试下载镜像。

重要提示: 您必须在要使用的每个终端上运行 eval $(minikube docker-env) ,因为它仅设置当前 shell 会话的环境变量。

原文由 svenwltr 发布,翻译遵循 CC BY-SA 4.0 许可协议

根据@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

原文由 jjinking 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题