【Docker】快速掌握容器镜像管理:Docker与Containerd客户端的镜像操作全攻略

news/2025/2/1 14:23:35/文章来源:https://www.cnblogs.com/o-O-oO/p/18696260

简介

在现代的容器化应用中,镜像(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标签修改操作。后续无论是备份、迁移、还是版本管理,这些命令都能帮助你高效管理容器镜像,快去试试吧!

原创 莱斯 运维佬实践库

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/877570.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

分布式事务之2PC两阶段提交

1. 分布式事务概述 1.1 问题背景 在分布式系统中,业务操作可能跨越多个服务或数据库(如订单服务、库存服务、支付服务),传统单机事务(ACID)无法满足跨网络节点的数据一致性需求。网络不可靠:服务间调用可能失败或超时。 数据一致性:不同节点间的状态需最终一致。 性能与…

【SQL】存储过程、函数、触发器

存储过程 存储过程(Stored Procedure)是一种在数据库中保存的SQL语句集合,它可以执行一系列的数据库操作,例如插入、更新、查询等。存储过程可以提高数据库操作的效率,减少网络流量,并且可以封装复杂的逻辑。定义: 存储过程是一组为了完成特定功能的SQL语句集,这些语句…

[Tools] GitHub Action 部署文档网站

关于部署网站,理论上来讲,只要你有一个服务器,你要采用什么样的方式来部署都是可以的。但是前提是你需要有一个服务器(物理机、云服务器)。 这节课我们部署文档网站选择使用 github 来进行部署,因为 GitHub 为我们提供了一个免费的服务器,一个账号只有一个,只要你在 Gi…

[Tools] VitePress搭建文档网站

创建 API 文档可以选择如下的 3 种方式:功能较少,可以直接写在 README.md 文件里面 内容较多,可以单独写一个文件 API 数量众多(Vue、React 这种级别),需要考虑单独拿一个网站来做详细的文档支持这里我们要搭建的网站实际上就是一个文档网站,这个时候我们可以选择静态站…

[Tools] 搭建文档网站

创建 API 文档可以选择如下的 3 种方式:功能较少,可以直接写在 README.md 文件里面 内容较多,可以单独写一个文件 API 数量众多(Vue、React 这种级别),需要考虑单独拿一个网站来做详细的文档支持这里我们要搭建的网站实际上就是一个文档网站,这个时候我们可以选择静态站…

java中的HsahMap

HsahMap HashMap 是 Java 中最常用的集合类之一,它实现了 Map 接口,基于哈希表存储键值对 HashMap的存储是无顺序的 HashMap存储的是键值对(key-value)其中键key是唯一的,值(value)可以重复。 HashMap的底层是数组和链表 HashMap的常见方法 添加方法: 1,put(K key, V valu…

MyBatis的增删改查实现

首先还是使用上一篇文章相同的数据表和实体类,如下图所示1 package com.loubin.pojo;2 3 public class User {4 private int id;5 private String name;6 private String pwd;7 8 public int getId() {9 return id; 10 } 11 12 public void …

Reqable:现代化 API 调试工具

Reqable 是一款专为开发者设计的现代化 API 调试工具,旨在简化 API 开发、测试和调试的流程。 它支持多种协议(如 HTTP、HTTPS、WebSocket 等),并提供了丰富的功能,帮助开发者更高效地构建、调试和分析 API 请求与响应。 Reqable 以其简洁的设计、强大的功能和卓越的性能,…

DeepSeek-R1?别信新闻,它真能打败 OpenAI?

Yy DeepSeek-R1?别信新闻 它真的是那个打败 OpenAI 的开源黑马模型,还是又一条假新闻? Fabio Matricardi它真的那么厉害……是在哪方面? 前言:DeepSeek在大模型小型以及优化的道路上探索蒸馏和纯强化学习的路径获得的一点成绩确实让美国人紧张了一把,但同时也招致了更严格…

6.演讲比赛流程管理系统

基于STL的演讲比赛流程管理系统。1.需求2.文件目录3.代码 3.1Speaker.h #pragma once #include<iostream> using namespace std;class Speaker {public:string m_Name;double m_Score[2];};3.2SpeechManager.h #pragma once #include<iostream> #include<vector…