Skip to content

手动导入镜像文件到本地 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 中需要用到该镜像,就不会再去远端拉取了。