【Docker系列】使用格式化输出与排序技巧

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。
img

  • 推荐: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

七、注意事项

  1. 字段名称区分大小写:在 Go 模板中,.Repository.repository是不同的,必须使用正确的大小写。

  2. 特殊字符处理:如果镜像名包含特殊字符,可能需要额外的处理。

  3. 性能考虑:对于拥有大量镜像的系统,复杂的格式化可能会稍微增加命令执行时间。

  4. 跨平台兼容性sort -hcolumn命令在 Linux 上广泛可用,但在其他系统上可能需要安装额外软件包。

八、扩展思路

掌握了这些技巧后,我们可以进一步扩展:

  1. 结合其他 Docker 命令:类似的格式化方法也可以应用于docker psdocker volume ls等命令。

  2. 创建别名:将常用格式设置为 shell 别名,如:

    alias dimgs="docker images --format \"{{.Size}}\t{{.Repository}}:{{.Tag}}\t{{.ID}}\" | sort -h -r | column -t -s $'\t'"
    
  3. 编写脚本:对于更复杂的需求,可以编写 shell 脚本封装这些命令,添加更多功能如自动清理等。

觉得有用的话点个赞 👍🏻 呗。
❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄

💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍

🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙

img

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

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

相关文章

临床智能体AI与环境感知AI的融合:基于python的医疗自然语言处理深度分析

引言 医疗领域的数智化进程正以前所未有的速度推进,人工智能技术的应用尤为显著。随着大型语言模型(LLMs)的迅猛发展,医疗AI已从简单的辅助工具升级为复杂的智能体系统。临床智能体AI与环境感知AI的融合代表了医疗AI的最新发展方向,为重塑医疗运营自然语言处理提供了全新…

JAVA SE(9)——多态

1.多态的概念&作用 多态(Polymorphism)是面向对象编程的三大基本特性之一(封装和继承已经讲过了),它允许不同类的对象对同一消息做出不同的响应。具体来说,多态允许基类/父类的引用指向派生类/子类的对象(向上转型…

GPS定位方案

目录 一、常用的GPS定位方案包括: 二、主流品牌及热销型号 三、常用GPS算法及核心逻辑: 一、基础定位算法 二、高精度算法 三、辅助优化算法 四、信号处理底层算法 四、基本原理(想自己写算法的琢磨一下原理) 一、常用的GP…

PCIe - ZCU106(RC) + KU5P(EP) + 固化

目录 1. 简介 1.1 Data Mover 1.2 描述符 2. ZCU102 2.1 Ubuntu OS 2.2 USB Host 2.2.1 连接拓扑 2.2.2 设备类型 2.2.3 USB 跳帽设置 2.3 无线网卡 2.4 PCIe Info 2.4.1 Diagram 2.4.2 lspci -tv 2.4.3 lspci -v 2.4.2.1 设备基本信息 2.4.2.2 控制与状态寄存…

精益数据分析(43/126):媒体网站商业模式的盈利与指标解析

精益数据分析(43/126):媒体网站商业模式的盈利与指标解析 在创业和数据分析的学习旅程中,我们不断探索各种商业模式的奥秘,今天让我们一同深入《精益数据分析》,聚焦媒体网站商业模式,剖析其盈…

Android数据库全栈开发实战:Room+SQLCipher+Hilt企业级应用构建

简介 在移动应用开发中,数据库作为数据存储的核心组件,其安全性和性能对企业级应用至关重要。本文将从零开始,全面讲解Android数据库开发的最新技术,包括Room框架的深度使用、SQLCipher加密数据库的实现、Hilt依赖注入的集成以及前后端数据同步的完整方案。通过一个加密任…

HarmonyOS 5.0 低时延音视频开发​​

大家好,我是 V 哥。 在HarmonyOS 5.0的开发中,支持低时延音视频开发,为了确保语法正确, V 哥以下代码符合HarmonyOS NEXT API 14的规范。为了方便初学者更好入门,V 哥伙同2位小伙伴花了1年时间,搞了三本鸿蒙…

微调大模型如何准备数据集——常用数据集,Alpaca和ShareGPT

微调大模型如何准备数据集——常用数据集,Alpaca和ShareGPT 数据集准备常用数据集自定义数据集AlpacaShareGPT数据集准备 常用数据集 预训练数据集 Wiki Demo (en)RefinedWeb (en)RedPajama V2 (en)Wikipedia (en)Wikipedia (zh)Pile (en)

2025年OpenAI重大架构调整:资本与使命的再平衡

目录 前言 一、调整核心:三重架构的重构 1.1 控制权的重新锚定 1.2 营利部门的角色转型 1.3 资金池的重新配置 二、调整动因:三重矛盾的破解 2.1 资金需求与融资限制的冲突 2.2 商业竞争与使命纯度的博弈 2.3 内部治理与外部监管的张力 三、产…

GD32/STM32 ADC/DMA使用指南

首先我们对ADC及DMA的基础知识作一下简单介绍。 一、 GD32/STM32 ADC模块的核心要点 一)、ADC基础特性 ‌12位逐次逼近型‌ GD32/STM32 ADC为12位分辨率,最大量化值为4095(对应3.3V参考电压),支持0-3.3V模拟输入范…

Linux(十四)进程间通信(IPC),管道

一、进程间通信 (一)系统介绍进程间通信 进程间通信(IPC)介绍 小编插入的这篇文章详细介绍了进程间通信的一些内容,大家可以一起学习。 (二)进程间通信的方法 1、管道 2、信号量 3、共享…

使用Homebrew下载配置git和连接GitHub(Mac版)

本文详细介绍了在M系列Mac上安装Homebrew并配置Git的过程,包括git的下载、设置全局用户名和邮箱、生成SSH密钥、添加GitHubSSH密钥以及终端验证。这些步骤有助于用户顺利进行协同开发。 一、下载git 1、终端输入一下命令 brew install git2、这时下载完成 二、配…

悬崖边的摄影牧歌

在云雾缭绕的悬崖边,一场独属于自然与光影的邂逅悄然上演。 摄影师伫立于此,身旁是一群灵动的羊。他架起相机,眼神专注而炽热,仿佛要将这天地间的一切都收纳进小小的取景器。悬崖陡峭,岩石冷峻,却因羊群的洁…

Linux环境基础与开发工具使用

1. Linux编译器vim 1.1 vim的基本概念讲解 vim有很多种模式,我们初学者常用的就是命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode)。 命令/正常模式(Normal mode) …

《Python星球日记》 第36天:线性代数基础

名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 专栏:《Python星球日记》,限时特价订阅中ing 目录 一、标量、…

使用VMware Workstation pro 17.5.1在Windows上安装Ubuntu 24.04.2的 详细步骤

一、准备工作 1. 下载Ubuntu 24.04.2 ISO镜像 官方下载地址:Ubuntu 24.04.2 (Noble Numbat) 选择 ubuntu-24.04.2-desktop-amd64.iso(桌面版)或 ubuntu-24.04.2-live-server-amd64.iso(服务器版)。 2. 确认系统要求…

ios systeam introduction

Here is an in-depth look at Apple’s iOS, from its inception to its latest major release, covering architecture, core components, security, app lifecycle, development tools, and the headline features of iOS 18. iOS began life as “iPhone OS,” unveiled alo…

优化04-选择率和直方图

选择率 在Oracle数据库中,选择率(Selectivity) 是优化器(CBO,基于成本的优化器)用来评估SQL语句中某个条件(如WHERE子句)过滤数据的比例的关键指标。它直接影响优化器选择执行计划的…

python实战:通过输入文字匹配在docx文档中的具体位置

在指定的docx文档中,输入一串文字来查看该文字在文档中的具体位置;方便后续处理(如替换文字,高亮显示等等操作) from docx import Documentdef find_text_in_docx(file_path, search_text):# 读取docx文件doc = Document(file_path)# 遍历段落,查找匹配的文本for i

Flutter——数据库Drift开发详细教程(二)

目录 1.核心API1.1查询数据列表分页1.2 列表排序1.3推迟获取与观察 1.核心API 1.1查询数据列表分页 限制返回的结果数量limit&#xff0c;从某一位置开始查询offset ///limit10, offset10 Future<List<TodoItem>> limitTodos(int limit, {int? offset}) {return …