我有几个docker图像,我想用 minikube
. 我不想首先上传然后下载相同的图像,而不是直接使用本 Map 像 . 我该怎么做呢?
我试过的东西:
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
7 回答
This Answer isnt limited to minikube!
使用本地注册表:
现在正确标记您的图像:
请注意,localhost应更改为运行注册表容器的计算机的DNS名称 .
现在将您的图像推送到本地注册表:
你应该能够把它拉回来:
现在更改您的yaml文件以使用本地注册表 .
考虑在适当的位置安装卷以将图像保留在注册表中 .
一种方法是在本地构建映像,然后执行:
minikube docker-env
可能无法返回在其他用户/ sudo下运行的正确信息 . 相反,你可以运行sudo -u yourUsername minikube docker-env
.它应该返回类似的东西:
要添加到先前的答案,如果你有一个tarball图像,你只需将它加载到本地docker图像集
docker image load -i /path/image.tar
. 请记得运行它 aftereval $(minikube docker-env)
,因为minikube不与本地安装的docker引擎共享图像 .来自kubernetes文档:
https://kubernetes.io/docs/concepts/containers/images/#updating-images
或者阅读另一种方式:使用:latest标签强制始终拉动图像 . 如果你使用上面提到的
eval $(minikube docker-env)
,那么要么不使用任何标签,要么为你的本 Map 像分配标签,你可以避免Kubernetes试图强行拉动它 .正如README描述的那样,您可以使用
eval $(minikube docker-env)
重用Minikube中的Docker守护程序 .因此,要使用图像而不上传图像,您可以按照以下步骤操作:
用
eval $(minikube docker-env)
设置环境变量使用Minukube的Docker守护程序构建映像(例如
docker build -t my-image .
)在pod规范中设置图像,如构建标记(例如
my-image
)将imagePullPolicy设置为
Never
,否则Kubernetes将尝试下载图像 .Important note: 您必须在要使用的每个终端上运行
eval $(minikube docker-env)
,因为它只为当前shell会话设置环境变量 .除了已接受的答案,您还可以使用以下命令实现您最初想要的(使用
run
命令创建部署):我在Kubernetes-dev论坛上找到了关于发电机的信息:
https://groups.google.com/forum/#!topic/kubernetes-dev/YfvWuFr_XOM
根据@svenwltr的解决方案,对我有用的是: