【Docker系列】使用格式化输出与排序技巧
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。
- 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老
- 导航
- 檀越剑指大厂系列:全面总结 java 核心技术,jvm,并发编程 redis,kafka,Spring,微服务等
- 常用开发工具系列:常用的开发工具,IDEA,Mac,Alfred,Git,typora 等
- 数据库系列:详细总结了常用数据库 mysql 技术点,以及工作中遇到的 mysql 问题等
- 新空间代码工作室:提供各种软件服务,承接各种毕业设计,毕业论文等
- 懒人运维系列:总结好用的命令,解放双手不香吗?能用一个命令完成绝不用两个操作
- 数据结构与算法系列:总结数据结构和算法,不同类型针对性训练,提升编程思维,剑指大厂
非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。💝💝💝 ✨✨ 欢迎订阅本专栏 ✨✨
博客目录
- 一、Docker 镜像管理基础
- 二、格式化输出基础
- 三、进阶格式化技巧
- 1. 添加制表符分隔
- 2. 包含更多信息
- 3. 控制字段顺序
- 四、排序功能增强
- 1. 按大小排序
- 2. 按特定列排序
- 五、美化输出格式
- 六、实际应用场景
- 1. 快速识别大镜像
- 2. 精确查找特定镜像
- 3. 创建自定义报告
- 七、注意事项
- 八、扩展思路
Docker 作为当今最流行的容器化技术之一,其命令行工具提供了强大的功能来管理容器镜像。
一、Docker 镜像管理基础
在开始介绍高级技巧前,我们先回顾一下 Docker 镜像管理的基础命令。最常用的docker images
命令可以列出本地存储的所有 Docker 镜像,默认显示以下信息:
- REPOSITORY:镜像所在的仓库名称
- TAG:镜像的标签,通常表示版本
- IMAGE ID:镜像的唯一标识符
- CREATED:镜像创建时间
- SIZE:镜像大小
虽然默认输出已经提供了基本信息,但在实际工作中,我们经常需要更灵活地查看和组织这些信息,这就引出了格式化输出的需求。
二、格式化输出基础
Docker 提供了--format
参数,允许用户自定义输出格式。这个参数使用 Go 模板语法,可以精确控制输出的内容和格式。
基本语法是:
docker images --format "模板内容"
在模板中,我们可以使用双大括号{{}}
来引用镜像的各种属性,如.Repository
、.Tag
、.Size
、.ID
等。例如,最简单的格式化输出可以只显示镜像大小和仓库名:
docker images --format "{{.Size}} {{.Repository}}"
三、进阶格式化技巧
1. 添加制表符分隔
为了使输出更易读,我们可以在不同字段间添加制表符\t
:
docker images --format "{{.Size}}\t{{.Repository}}:{{.Tag}}"
这种格式将产生以制表符分隔的列,便于后续处理。
2. 包含更多信息
如文章开头示例所示,我们可以添加更多字段,如镜像 ID:
docker images --format "{{.Size}}\t{{.Repository}}:{{.Tag}}\t{{.ID}}"
这样输出的每一行将包含镜像大小、完整镜像名(仓库:标签)和镜像 ID 三部分信息。
3. 控制字段顺序
--format
参数的强大之处在于我们可以完全控制字段的顺序。例如,如果我们更关注镜像 ID,可以将其放在第一位:
docker images --format "{{.ID}}\t{{.Size}}\t{{.Repository}}:{{.Tag}}"
四、排序功能增强
单纯的格式化输出虽然有用,但结合排序功能才能真正发挥威力。Linux 的sort
命令提供了多种排序选项。
1. 按大小排序
Docker 镜像大小默认以字节为单位显示,但sort -h
选项可以识别人类可读的数字格式(如 1K、234M、2G 等),非常适合用于排序镜像大小:
docker images --format "{{.Size}}\t{{.Repository}}:{{.Tag}}" | sort -h
添加-r
参数可以反向排序,从大到小显示:
docker images --format "{{.Size}}\t{{.Repository}}:{{.Tag}}" | sort -h -r
2. 按特定列排序
当输出包含多列时,我们可以使用-k
参数指定按哪一列排序。例如,按第二列(大小)排序:
docker images --format "{{.ID}}\t{{.Size}}\t{{.Repository}}:{{.Tag}}" | sort -h -r -k 2
五、美化输出格式
为了获得更专业的显示效果,我们可以使用column
命令来对齐各列。-t
选项表示创建表格,-s
指定分隔符(这里是制表符$'\t'
):
docker images --format "{{.Size}}\t{{.Repository}}:{{.Tag}}\t{{.ID}}" | sort -h -r | column -t -s $'\t'
这种组合产生的输出整洁美观,各列完美对齐,极大提高了可读性。
六、实际应用场景
1. 快速识别大镜像
在磁盘空间紧张时,我们需要快速找出占用空间最大的镜像:
docker images --format "{{.Size}}\t{{.Repository}}:{{.Tag}}" | sort -h -r | head -n 5
这个命令会列出最大的 5 个镜像,帮助我们决定哪些可以删除以释放空间。
2. 精确查找特定镜像
当我们需要查找特定模式的镜像时,可以结合grep
:
docker images --format "{{.ID}}\t{{.Repository}}:{{.Tag}}" | grep "python"
3. 创建自定义报告
我们可以将格式化输出重定向到文件,创建自定义的镜像报告:
docker images --format "{{.ID}}\t{{.Repository}}\t{{.Tag}}\t{{.Size}}\t{{.CreatedAt}}" > docker_images_report.txt
七、注意事项
-
字段名称区分大小写:在 Go 模板中,
.Repository
和.repository
是不同的,必须使用正确的大小写。 -
特殊字符处理:如果镜像名包含特殊字符,可能需要额外的处理。
-
性能考虑:对于拥有大量镜像的系统,复杂的格式化可能会稍微增加命令执行时间。
-
跨平台兼容性:
sort -h
和column
命令在 Linux 上广泛可用,但在其他系统上可能需要安装额外软件包。
八、扩展思路
掌握了这些技巧后,我们可以进一步扩展:
-
结合其他 Docker 命令:类似的格式化方法也可以应用于
docker ps
、docker volume ls
等命令。 -
创建别名:将常用格式设置为 shell 别名,如:
alias dimgs="docker images --format \"{{.Size}}\t{{.Repository}}:{{.Tag}}\t{{.ID}}\" | sort -h -r | column -t -s $'\t'"
-
编写脚本:对于更复杂的需求,可以编写 shell 脚本封装这些命令,添加更多功能如自动清理等。
觉得有用的话点个赞
👍🏻
呗。
❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍
🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙
相关文章:

【Docker系列】使用格式化输出与排序技巧
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...
nvme Unable to change power state from D3cold to D0, device inaccessible
有个thinkpad l15 gen4笔记本,使用较少,有一块三星m2和东芝14t硬盘,想安装飞牛nas系统作为家庭照片库,制作飞牛启动盘,发现安装飞牛需要全盘格式化,电脑本身的系统还是需要保留的,故想到再安装一…...

基础语法(二)
Mysql基础语法(二) Mysql基础语法(二)主要介绍Mysql中稍微进阶一点的内容,会稍微有一些难度(博主个人认为)。学习完基础语法(一)和基础语法(二)之…...
AcWing 877:扩展欧几里得算法
【题目来源】 https://www.acwing.com/problem/content/879/ 【题目描述】 给定 n 对正整数 ai,bi,对于每对数,求出一组 xi,yi,使其满足 aixibiyigcd(ai,bi)。 【输入格式】 第一行包含整数 n。接下来 n 行,每行包含两个整数 ai…...
WebRTC流媒体传输协议RTP点到点传输协议介绍,WebRTC为什么使用RTP协议传输音视频流?
通过上一章《WebRTC工作原理详细介绍、WebRTC信令交互过程和WebRTC流媒体传输协议介绍》,我们知道WEBRTC在完成 SDP 协商和 ICE 候选交换信令后,双方就可以建立 RTP 流,开始传输音视频数据,这时,RTP 数据包就通过在 IC…...

TOA的定位,建模与解算的步骤、公式推导
TOA(到达时间)定位的核心是通过测量信号从目标到多个基站的传播时间,将其转换为距离信息,并利用几何关系解算目标位置。本文给出具体的建模与解算步骤及公式推导 文章目录 通用模型建立非线性方程组构建线性化处理(最小二乘法)最大似然估计(ML)高斯-牛顿迭代法误差分析…...
Python序列化的学习笔记
1. Npy&Numpy O4-mini-Cursor:如果.npy文件里包含了「Python对象」而非纯数值数组时,就必须在加载时加上allow_pickleTrue。...
[C++] 大数减/除法
目录 高精度博客 - 前两讲高精度减法高精度除法高精度系列函数完整版 高精度博客 - 前两讲 讲次名称链接高精加法[C] 高精度加法(作用 模板 例题)高精乘法[C] 高精度乘法 高精度减法 void subBIG(int x[], int y[], int z[]){z[0] max(x[0], y[0]);for(int i 1; i < …...

2025年PMP 学习七 -第5章 项目范围管理 (5.4,5.5,5.6 )
2025年PMP 学习七 -第5章 项目范围管理 5.4 创建 WBS 1.定义与作用 定义把项目可交付成果和项目工作分解成较小的,更易于管理的组件作用对所要交付的内容提供一个结构化的视图 2.输入,输出,工具与技术 3. 创建WBS的依据(输入&…...

CAD属性图框值与Excel联动(CAD块属性导出Excel、excel更新CAD块属性)——CAD c#二次开发
CAD插件实现块属性值与excel的互动,效果如下: 加载dll插件(CAD 命令行输入netload ,运行xx即可导出Excel,运行xx1即可根据excel更新dwg块属性值。) 部分代码如下 // 4. 开启事务更新CAD数据using (Transact…...

【HarmonyOS 5】鸿蒙中进度条的使用详解
【HarmonyOS 5】鸿蒙中进度条的使用详解 一、HarmonyOS中Progress进度条的类型 HarmonyOS的ArkUI框架为开发者提供了多种类型的进度条,每种类型都有其独特的样式,以满足不同的设计需求。以下是几种常见的进度条类型: 线性进度条(…...
Vue3响应式原理源码解析(通俗易懂版)
一、Vue3响应式核心流程 reactive(): 通过Proxy代理目标对象拦截get/set/deleteProperty等操作使用Reflect执行默认行为 依赖收集: get时通过track函数收集依赖(当前执行的effect)使用WeakMap建立"target -> key -> d…...
milvus+flask山寨复刻《从零构建向量数据库》第7章
常规练手,图片搜索山寨版。拜读罗云大佬著作,结果只有操作层的东西可以上上手。 书中是自己写的向量数据库,这边直接用python拼个现成的milvus向量数据库。 1. 创建一个向量数据库以及对应的相应数据表: # Milvus Setup Argume…...

Spring Cloud: Nacos
Nacos Nacos是阿里巴巴开源的一个服务发现,配置管理和服务管理平台。只要用于分布式系统中的微服务注册,发现和配置管理,nacos是一个注册中心的组件 官方仓库:https://nacos.io/ Nacos的下载 Releases alibaba/nacos 在官网中…...
AI生成视频推荐
以下是一些好用的 AI 生成视频工具: 国内工具 可灵 :支持文本生成视频、图片生成视频,适用于广告、电影剪辑和短视频制作,能在 30 秒内生成 6 秒的高清视频(1440p),目前处于免费测试阶段。 即…...

Win11安装APK方法详解
1、官方win11系统 预览版 开发版 正式版 都行 2、同时你还需要开启主板 BIOS 虚拟化选项(具体名称不同主板略有不同) 这一步自行百度 开始:先去确定有没有开启虚拟化 任务管理器检查—— 虚拟化是否已经开启,如果没有自己去BIO…...

SSH终端登录与网络共享
SSH 是较可靠,专为远程登录会话和其他网络服务提供安全性的协议 注意 SSH终端登录的前提是:电脑和板卡都能够通过网络相连接及通信 与连接互联网不一样,SSH可以不用互联网,只要电脑和板卡组成一个小型网络即可 网络方案 如果您…...

Android 13 默认打开 使用屏幕键盘
原生设置里,系统-语言和输入法-实体键盘-使用屏幕键盘 选项, 关闭时,外接物理键盘,如USB键盘,输入时不会弹出软键盘。 打开时,外接物理键盘,如USB键盘,输入时会弹出软键盘。 这个选…...

操作系统学习笔记第2章 (竟成)
第 2 章 进程管理 【考纲内容】 1.进程与线程: (1) 进程 / 线程的基本概念; (2) 进程 / 线程的状态与转换; (3) 线程的实现:内核支持的线程;线程库支持的线程; (4) 进程与线程的组织与控制; (5)…...
行业黑化.新平面
最近听了一句行业黑话:"这个功能是新平面吗?" 沙比了吧,什么是平面,还新的,旧的都不动是啥 再结合日常口语"管理面"、"控制面"、"数据面",问了问DeepSeek 解释还是…...
Veins同时打开SUMO和OMNeT++的GUI界面
进入 Veins 工程目录(即包含 sumo-launchd.py 的目录),打开终端设置 SUMO_HOME 环境变量(指向你安装的 SUMO 路径): export SUMO\_HOME/home/veins/src/sumo-1.11.0编译 Veins 工程(包含 OMNeT…...

复合机器人案例启示:富唯智能如何以模块化创新引领工业自动化新标杆
在国产工业机器人加速突围的浪潮中,富唯智能复合机器人案例凭借其高精度焊接与智能控制技术,成为行业标杆。然而,随着制造业对柔性化、全场景协作需求的升级,复合机器人正从单一功能向多模态协同进化。作为这一领域的创新者&#…...
Python爬虫实战:获取文学网站四大名著并保存到本地
一、引言 1.1 研究背景 中国古典四大名著承载着深厚的文化底蕴,是中华民族的宝贵精神财富。在互联网时代,网络文学资源虽丰富多样,但存在分散、质量参差不齐等问题 。部分文学网站存在访问限制、资源缺失等情况,用户难以便捷获取完整、高质量的经典著作内容。开发专业的爬…...
从需求到用例的AI路径:准确率与挑战
用工作流生成测试用例和自动化测试脚本! 引言:用例的黄金起点 在软件工程中,“测试用例”是连接需求理解与质量保障之间的关键桥梁。一份高质量的测试用例,不仅是验证功能实现是否符合需求的工具,更是产品风险感知、用…...

Linux在web下http加密和配置虚拟主机及动态页面发布
web服务器的数据加密 1.简介:由于http协议以明文方式发送,不提供任何方式的数据加密,也不适合传输一些重要的信息,如银行卡号、密码等,解决该缺陷设计了安全套接字层超文本传输协议https; 2.https的握手流…...

C++ learning day 02
目录 引言 编译定义: 查看obj文件 1. 禁用预处理 2. CTRL F7 编译math.cpp 3. 查看obj文件 4. 查看.asm文件(汇编程序) 引言 今天介绍C中,一个Cpp文件经过汇编后得到obj文件,以及obj文件的内容&a…...

使用fdisk 、gdisk管理分区
用 fdisk 管理分区 fdisk 命令工具默认将磁盘划分为 mbr 格式的分区 命令: fdisk 设备名 fdisk 命令以交互方式进行操作的,在菜单中选择相应功能键即可 [rootlocalhost ~]# fdisk /dev/sda # 对 sda 进行分区 Command (m for help): # 进入 fdis…...

如何通过C# 获取Excel单元格的数据类型
在处理 Excel 文件时,了解单元格的数据类型有助于我们正确地解析和处理数据。Free Spire.XLS 是一款功能强大且免费的.NET 组件,支持高效地操作 Excel 文件,包括读取单元格类型。本文将详细介绍如何使用 Free Spire.XLS 来获取 Excel 单元格的…...
Servlet、HttpServlet 和 DispatcherServlet 区别与关系
在 Java Web 开发中,Servlet、HttpServlet 和 DispatcherServlet 是非常常见的类。 一、Servlet 接口(javax.servlet.Servlet) ✅ 基本介绍: 所属包:javax.servlet.Servlet作用:是所有 Servlet 的根接口,定义了 Servlet 生命周期的基本方法。特点: 与协议无关(可以用…...

Fiori学习专题三十九:使用标准模板创建一个应用程序
之前的课程我们按照教程一步一步创建了我们的一个应用程序,但是总不能每次开发都像这样子来做,那样就太慢了。事实上MVC架构的应用程序,是有很多模板,今天我们就按照模板来创建一个应用程序。 开发工具还是使用vscode,…...