0%

Minikube如何使用本地docker镜像

问题描述

我有几个Docker镜像,我想用minikube。我不想使用先上传然后下载镜像的方式,而是想直接使用本地镜像。我该怎么做呢?

我试过的方法:

  1. 我尝试运行这些命令(分别删除minikube的实例并重新开始)

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

    输出:

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

    它只是陷入某种状态但从未达到就绪状态。

  2. 我尝试创建一个registry,然后将镜像放入其中,但这也无效。我可能做错了但我找不到正确的指令来完成这项任务。

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

操作系统:ubuntu 16.04

Docker:Docker版本1.13.1,build 092cba3

Kubernetes:

1
2
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来做这个的解决方案,那就太棒了。谢谢。

高票回答

正如README描述的那样,您可以使用eval $(minikube docker-env)重用Minikube中的Docker守护进程。

因此,要使用本地镜像而不先上传镜像,您可以按照以下步骤操作:

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

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

原文链接

How to use local docker images with Minikube?