我正在尝试使用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
而且它也没有用。
有什么想法吗?
答案 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映像:
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)
要应用这些变量,
评估$(minikube -p minikube docker-env)
现在需要再次构建映像,以便将其安装在minikube注册表中,而不是本地映像中。
docker build。 -t forketyfork / hello-world
forketyfork / hello-world是Docker映像的名称。
通过Yaml configuartion file.
将映像部署到kubernetes或Minkubekubectl创建-f helloworld.yml
helloworld.yml是yml / yaml文件的名称。
kubectl get pods
以获取豆荚的状态为进一步参考,https://medium.com/swlh/how-to-run-locally-built-docker-images-in-kubernetes-b28fbc32cc1d