手动导入镜像文件到本地 Minikube
🏷️ Minikube
因为网络环境,经常会有拉取不下来镜像的问题,如果别的机器已经有这个镜像了,可以通过手动导出再导入的方式共享给别的机器。
这里是要将镜像导入到本地 Minikube(一个单机版的 Kubernetes 集群,学习用很方便)。Minikube 启动时,会将 C:\Users\{用户名}\.minikube\files
目录下的文件导入到其根目录,利用这个特性,可以将导出的镜像导入到 Minikube。
这里以 gcr.io/heptio-images/ks-guestbook-demo:0.2 镜像为例。
首先,需要在已经下载好了镜像的机器上导出镜像。
bash
docker save -o heptio-images.tar gcr.io/heptio-images/ks-guestbook-demo:0.2
之后将导出的文件放在 C:\Users\{用户名}\.minikube\files
目录下,如 images/heptio-images.tar
。
如果 Minikube 已经启动,需要先使用 minikube stop
命令关闭 minikube 容器,之后再启动 minikube start
。
bash
docker ps
docker exec -it {Container ID} /bin/bash
cd images
docker load -i heptio-images.tar
本地执行结果:
powershell
PS C:\k8s> docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f24d4c1df3d7 kicbase/stable:v0.0.28 "/usr/local/bin/entr…" 5 months ago Up 2 hours 127.0.0.1:12805->22/tcp, 127.0.0.1:12806->2376/tcp, 127.0.0.1:12808->5000/tcp, 127.0.0.1:12809->8443/tcp, 127.0.0.1:12807->32443/tcp minikube
PS C:\k8s> docker exec -it f24d4c1df3d7 /bin/bash
root@minikube:/# ls
Release.key bin boot data dev docker.key etc home images kic.txt kind lib lib32 lib64 libx32 media mnt opt proc root run sbin srv sys tmp usr var
root@minikube:/# cd images/
root@minikube:/images# ls
heptio-images.tar
root@minikube:/images# docker load -i heptio-images.tar
18f9b4e2e1bc: Loading layer [==================================================>] 129.3MB/129.3MB
69bff829a46c: Loading layer [==================================================>] 204.7MB/204.7MB
57277ee24969: Loading layer [==================================================>] 3.584kB/3.584kB
e92cac1684b9: Loading layer [==================================================>] 8.551MB/8.551MB
f83808442058: Loading layer [==================================================>] 10.24kB/10.24kB
1d48c08c6ec5: Loading layer [==================================================>] 9.728kB/9.728kB
7a67a6be7d43: Loading layer [==================================================>] 4.096kB/4.096kB
4b50d85b3618: Loading layer [==================================================>] 7.68kB/7.68kB
1495b9834daa: Loading layer [==================================================>] 13.86MB/13.86MB
f8ea2e589db0: Loading layer [==================================================>] 4.096kB/4.096kB
410de292381a: Loading layer [==================================================>] 33.01MB/33.01MB
09e4c20e9388: Loading layer [==================================================>] 11.78kB/11.78kB
2f73482a8e7e: Loading layer [==================================================>] 4.608kB/4.608kB
93b177774f71: Loading layer [==================================================>] 10.07MB/10.07MB
8fcfba8f58a0: Loading layer [==================================================>] 17.39MB/17.39MB
88dab008c36a: Loading layer [==================================================>] 34.74MB/34.74MB
7966a4e65b1c: Loading layer [==================================================>] 12.8kB/12.8kB
ff9a4716c97b: Loading layer [==================================================>] 2.858MB/2.858MB
ef8bc5b3d95e: Loading layer [==================================================>] 1.86MB/1.86MB
f6cd8c915923: Loading layer [==================================================>] 9.728kB/9.728kB
f70cb33ae8d2: Loading layer [==================================================>] 9.728kB/9.728kB
8ab6796237b1: Loading layer [==================================================>] 4.608kB/4.608kB
2de5f261a0ce: Loading layer [==================================================>] 7.68kB/7.68kB
873681e98751: Loading layer [==================================================>] 4.608kB/4.608kB
e6095220669d: Loading layer [==================================================>] 5.12kB/5.12kB
910d34637300: Loading layer [==================================================>] 3.584kB/3.584kB
Loaded image: gcr.io/heptio-images/ks-guestbook-demo:0.2
之后,如果在 Minikube 中需要用到该镜像,就不会再去远端拉取了。