Kubernetes无法在本地运行docker镜像

时间:2018-04-18 11:25:19

标签: kubernetes minikube

我正在尝试使用Kubernetes运行我在本地构建的docker镜像。

这是我的命令行:

kubectl run myImage --image=myImage --port 3030 --image-pull-policy=IfNotPresent

我见过许多人说我们需要添加--image-pull-policy=IfNotPresent标志,以便Kubernetes可以在本地查找图像而不是Docker Hub,但我仍然会收到此错误(来自pod上的Minikube仪表板,服务和部署。)

  

无法提取图像" myImage":rpc错误:代码=未知desc =来自守护程序的错误响应:对myImage拉取访问权限,存储库不存在或者可能需要登录器登录&#39 ;

但看起来这里还有另一个问题,我也试过了--image-pull-policy=Never而且它也没有用。

有什么想法吗?

2 个答案:

答案 0 :(得分:8)

image中无法使用minikube

Minikube使用单独的docker daemon。这就是为什么,即使机器中存在图像,迷你内部仍然缺少图像。

首先,将图像发送到minikube,

docker save myImage | (eval $(minikube docker-env) && docker load)

此命令将图像保存为tar存档,然后将图像单独加载到minikube中。

接下来,使用image-pull-policy设置为IfNotPresent

的部署中的图片
kubectl run myImage --image=myImage --port 3030 --image-pull-policy=IfNotPresent

答案 1 :(得分:0)

您在docker中创建的映像在Minikube中将不可用,因为Minikube拥有自己的docker守护进程,并会检查其中的docker映像和DockerHub。

按照以下步骤访问Minikube Docker守护程序,构建并部署Docker映像:

  1. 使用minikube docker-env command输出用于将本地Docker守护程序指向minikube内部Docker注册表的环境变量。

minikube docker-env导出DOCKER_TLS_VERIFY =“ 1”导出 DOCKER_HOST =“ tcp://172.17.0.2:2376”导出 DOCKER_CERT_PATH =” / home / user / .minikube / certs”导出 MINIKUBE_ACTIVE_DOCKERD =” minikube”

#要将您的外壳指向minikube的docker-daemon,请运行:eval $(minikube -p minikube docker-env)

  1. 要应用这些变量,

    评估$(minikube -p minikube docker-env)

  2. 现在需要再次构建映像,以便将其安装在minikube注册表中,而不是本地映像中。

    docker build。 -t forketyfork / hello-world

forketyfork / hello-world是Docker映像的名称。

  1. 通过Yaml configuartion file.

    将映像部署到kubernetes或Minkube

    kubectl创建-f helloworld.yml

helloworld.yml是yml / yaml文件的名称。

  1. 现在kubectl get pods以获取豆荚的状态

为进一步参考,https://medium.com/swlh/how-to-run-locally-built-docker-images-in-kubernetes-b28fbc32cc1d