问题描述
我有几个Docker镜像,我想用minikube。我不想使用先上传然后下载镜像的方式,而是想直接使用本地镜像。我该怎么做呢?
我试过的方法:
我尝试运行这些命令(分别删除minikube的实例并重新开始)
1
2kubectl run hdfs --image=fluxcapacitor/hdfs:latest --port=8989
kubectl run hdfs --image=fluxcapacitor/hdfs:latest --port=8989 imagePullPolicy=Never输出:
1
2NAME READY STATUS RESTARTS AGE
hdfs-2425930030-q0sdl 0/1 ContainerCreating 0 10m它只是陷入某种状态但从未达到就绪状态。
我尝试创建一个registry,然后将镜像放入其中,但这也无效。我可能做错了但我找不到正确的指令来完成这项任务。
请提供在本地kubernetes实例中使用本地docker镜像的说明。
操作系统:ubuntu 16.04
Docker:Docker版本1.13.1,build 092cba3
Kubernetes:
1 | 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"} |
如果有人可以帮助我找到一个使用docker-compose来做这个的解决方案,那就太棒了。谢谢。
高票回答
正如README描述的那样,您可以使用eval $(minikube docker-env)重用Minikube中的Docker守护进程。
因此,要使用本地镜像而不先上传镜像,您可以按照以下步骤操作:
- 用eval $(minikube docker-env)设置环境变量
- 使用Minikube的Docker守护程序构建镜像(例如docker build -t my-image)
- 在pod规范中设置镜像,如构建tag(例如my-image)
- 将imagePullPolicy设置为Never,否则Kubernetes将尝试下载镜像
重要说明:您必须在要使用的每个终端上运行eval $(minikube docker-env),因为它只为当前shell会话设置环境变量。