当前位置: 首页 > news >正文

【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

相关文章:

  • 【旅游网站设计与实现】基于SpringBoot + Vue 的前后端分离项目 | 万字详细文档 + 源码 + 数据库 + PPT
  • SQLite基本函数
  • 在 PyTorch 中借助 GloVe 词嵌入完成情感分析
  • Linux进程8-共享内存概念机操作、shmget/shmat/shmdt/shmctl函数用法、空间大小修改
  • 普通IT的股票交易成长史--20250506午复盘
  • JVM内存模型深度解剖:分代策略、元空间与GC调优实战
  • JVM——垃圾回收
  • git的push.default配置详解
  • 使用蚁群算法求解VRPTW问题
  • debian中笔记本的省电选择auto-cpufreq
  • AI视频智能分析网关打造社区/工厂/校园/仓库智慧消防实现精准化安全管控
  • (leetcode) 力扣100 6.三数之和 (双指针)
  • 《普通逻辑》学习记录——关系命题及其推理
  • 《深入理解分布式系统》之认识分布式系统
  • C语言| 递归求1+2+...+100的和
  • Ragflow服务器上部署教程
  • 已经写好论文的AI率降低
  • VTK|结合qt创建通用按钮控制显隐(边框、坐标轴、点线面)
  • 嵌入式学习--江协51单片机day1
  • 【HDLBits刷题】Verilog Language——1.Basics
  • 吴清稳市场稳预期发布会十要点:谈平准基金、股市稳定、公募改革和巴菲特
  • 十四届全国政协原常委、民族和宗教委员会原副主任苟仲文被提起公诉
  • 重温经典|中国首部剪纸动画片《猪八戒吃瓜》创作始末
  • 践行自由贸易主义理念,加快区域合作进程
  • 繁荣活跃!“五一”假期全国重点零售和餐饮企业销售额同比增长6.3%
  • 今晚上海地铁多条线路加开定点加班车,2号线运营至次日2时