1 背景介绍

有些环境的网络无法下载某些镜像,比如k8s.gcr.io/sig-storage/csi-node-driver-registrar:v2.0.1,这时就可以在一个可以下载该镜像的机器上先下载下来,然后导出来tar文件,拷贝到目标机器上,再导进去。

2 镜像导入-导出

以导入-导出以下4个镜像为例,介绍整个导入过程

  1. k8s.gcr.io/sig-storage/csi-node-driver-registrar:v2.0.1
  2. k8s.gcr.io/sig-storage/csi-resizer:v1.0.0
  3. k8s.gcr.io/sig-storage/csi-snapshotter:v3.0.0
  4. k8s.gcr.io/sig-storage/csi-attacher:v3.0.0

镜像导出

先下载以上四个镜像,下载后如下所示

容器镜像导出-导入 - 图1

执行以下命令到处镜像

  1. docker save -o csi.tar k8s.gcr.io/sig-storage/csi-snapshotter:v3.0.0 k8s.gcr.io/sig-storage/csi-resizer:v1.0.0 k8s.gcr.io/sig-storage/csi-node-driver-registrar:v2.0.1 k8s.gcr.io/sig-storage/csi-attacher:v3.0.0

或者

  1. docker save k8s.gcr.io/sig-storage/csi-snapshotter:v3.0.0 k8s.gcr.io/sig-storage/csi-resizer:v1.0.0 k8s.gcr.io/sig-storage/csi-node-driver-registrar:v2.0.1 k8s.gcr.io/sig-storage/csi-attacher:v3.0.0 > csi.tar

注意:如果使用image id导出镜像,则在导入镜像时不保留原来的:,如果要恢复原来的:,则需要通过以下命令恢复原来的:

  1. docker tag <IMAGE ID> <repository>:<TAG>

镜像导入

为了便于在同一台机器上验证效果,先把本地上已下载的镜像删除,删除后如下所示

容器镜像导出-导入 - 图2

执行以下命令导入镜像

  1. docker load -i csi.tar

或者

  1. docker load < csi.tar

参考资料

https://www.hangge.com/blog/cache/detail_2411.html

https://juejin.cn/post/6844903905881505800