【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.pswp.cn/bicheng/79893.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/79893.shtml
英文地址,請注明出處:http://en.pswp.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 …