简介
在现代的容器化应用中,镜像(Image)是不可或缺的组成部分。无论是Docker还是Containerd,它们都提供了强大的镜像管理功能。在这篇文章中,我们主要来讲下如何在这两个平台中实现镜像互相导入导出,以及如何进行镜像的Tag操作,让你能轻松上手。
Docker 平台导出到Containerd 平台
导出镜像:
如果需要将镜像导出为 .tar
文件,可以使用 docker save
命令:
docker save -o /path/to/output.tar image_name:tag
【示例】:保存alpine:3.15镜像到alpine-3.15.tar
docker save alpine:3.15 > alpine-3.15.tar
#或者
docker save -o aline-3.15.tar alpine:3.15
此命令将镜像 image_name:tag
导出为 .tar
文件,方便转移或备份。
导入镜像:
将上一步的tar包传到containerd服务器上,然后进行导入镜像。
【注意】:ctr默认的命名空间为"default",通常我们走k8s云原生平台下,容器镜像通常是存储在"k8s.io
"命名空间下的。
如下示例:我们将alpine-3.15的镜像导入到containerd平台中
ctr -n k8s.io images import alpine-3.15.tar --platform linux/amd64
【注意】:--platform linux/amd64
此参数用来指定导出镜像的目标平台架构,这对于多平台部署(如在不同硬件架构上运行容器)非常有用。如果不指定 --platform
,则默认情况下将使用当前平台的架构进行导出。
Containerd 平台导出到 Docker 平台
导出镜像:
要将镜像从Containerd导出为 .tar 文件,使用 ctr image export 命令(不加-n参数指定ns,则默认为default命名空间):
ctr image export /path/to/output.tar image_name:tag
这将把 image_name:tag 镜像导出为 .tar 文件,以便传输或备份。
【示例】:将k8s.io下的alpine:3.15镜像导出成alpine-3.15.tar
ctr -n k8s.io images export alpine-3.15.tar docker.io/library/alpine:3.15 --platform linux/amd64
上传到Docker平台服务器上进行导入:
docker load -i alpine-3.15.tar
#或者如下命令
docker load < alpine-3.15.tar
基于Docker平台镜像的导入导出
导出镜像:
docker save -o /path/to/output.tar image_name:tag
上传tar包到服务器后导入:
docker load < /path/to/image.tar
基于Containerd平台镜像的导入导出
导出镜像:
ctr -n k8s.io images export alpine.tar docker.io/library/alpine:3.15 --platform linux/amd64
上传tar包到服务器后导入:
ctr -n k8s.io images import alpine-3.15.tar --platform linux/amd64
Tag操作
镜像的Tag是版本控制和命名的关键。通过Tag操作,你可以给镜像打上标记。使用 docker tag
命令:
docker tag image_name:old_tag image_name:new_tag
这会将 image_name 的旧标签 old_tag 重新标记为新的标签 new_tag。你可以使用此方法来为镜像创建不同版本或进行重命名。
在Containerd中,使用 ctr image tag
命令进行镜像Tag操作:
ctr image tag image_name:old_tag image_name:new_tag
总结
通过本篇文章的介绍,你现在应该掌握了基于Docker和Containerd平台下镜像的迁移导入导出及tag标签修改操作。后续无论是备份、迁移、还是版本管理,这些命令都能帮助你高效管理容器镜像,快去试试吧!
原创 莱斯 运维佬实践库