docker save如何遷移鏡像更節省空間?

文章目錄

    • 方法一:使用`docker save`命令
    • 方法二:直接保存多個鏡像到一個tar文件
    • 哪個方法更節省磁盤空間?
      • 空間效率對比
      • 實際測試示例
      • 其他優勢
      • 結論
    • 如何用腳本遷移
    • 加載鏡像

遷移鏡像時候,往往會碰到基礎鏡像相同的很多鏡像需要遷移,這個時候如果單獨docker save的話,鏡像tar包的尺寸會很大,因此為了解決這個問題,你需要換種姿勢使用docker save! docker鏡像是分層的,將基礎鏡像的相同的層合并到一起, 就可以節省空間了。

方法一:使用docker save命令

  1. 首先保存各個鏡像到單獨的tar文件:

    docker save -o image1.tar image1:tag
    docker save -o image2.tar image2:tag
    docker save -o image3.tar image3:tag
    
  2. 然后將這些tar文件打包到一個tar包中:

    tar -cvf all_images.tar image1.tar image2.tar image3.tar
    

方法二:直接保存多個鏡像到一個tar文件

Docker的save命令本身就支持一次保存多個鏡像到一個文件:

docker save -o all_images.tar image1:tag image2:tag image3:tag

哪個方法更節省磁盤空間?

方法二(直接使用docker save保存多個鏡像到一個tar文件)更節省磁盤空間,原因如下:

空間效率對比

  1. 方法二更優

    • 當多個鏡像共享相同的層時,docker save會自動去重
    • 生成的單個tar文件只包含唯一的鏡像層,共享層不會重復存儲
    • 例如如果image1和image2都基于相同的Ubuntu基礎層,這個基礎層只存儲一次
  2. 方法一更耗空間

    • 每個docker save命令會獨立保存完整的鏡像(包括所有層)
    • 之后再用tar打包時,相同的鏡像層會被重復存儲
    • 例如如果三個鏡像共享同一個基礎層,這個基礎層會被存儲三次

實際測試示例

假設有三個鏡像:

  • image1 (包含基礎層300MB + 專屬層100MB)
  • image2 (包含相同基礎層300MB + 專屬層200MB)
  • image3 (獨立鏡像500MB)

方法一結果:

  • image1.tar = 400MB
  • image2.tar = 500MB
  • image3.tar = 500MB
  • 最終all_images.tar ≈ 1.4GB (基礎層被存儲了兩次)

方法二結果:

  • all_images.tar ≈ 300MB(基礎層) + 100MB + 200MB + 500MB = 1.1GB

其他優勢

方法二還有額外優點:

  1. 操作更簡單(單條命令完成)
  2. 加載更方便(單條docker load命令)
  3. 更好地保持鏡像間的依賴關系

結論

推薦總是使用方法二docker save -o output.tar img1 img2 img3),除非你有特殊需求需要保持鏡像完全獨立存儲。

如何用腳本遷移

很簡單,將鏡像列表寫入一個文本文件(e.g. imagelist)中:

  • imagelist
nginx:v1.20.1
redis:v5.0
mysql:v8.0.21

執行腳本,即可將全部鏡像保存:

docker save -o all_images.tar $(cat imagelist.txt)

加載鏡像

要從組合的tar文件中加載鏡像:

docker load -i all_images.tar

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/74834.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/74834.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/74834.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

全新升級 | Built For You Spring ‘25 發布,Fin 智能客服實現新突破!

圖像識別、語音交互、任務自動化,立即體驗智能客服蛻變! 上周,Intercom 舉辦了 Built For You Spring 25 發布會,正式揭曉了 AI Agent Fin 的一系列令人振奮的更新。Fin 正在以前所未有的速度革新客戶支持模式——它已經成功解決了…

需求導向的K8S網絡原理分析:Kube-proxy、Flannel、Calico的地位和作用

最近發現自己似乎從來沒學明白過Kubernetes網絡通信方案,特開一貼復習總結一下。 在k8s中,每個 Pod 都擁有一個獨立的 IP 地址,而且假定所有 Pod 都在一個可以直接連通的、扁平的網絡空間中。所以不管它們是否允許在同一個 Node(宿…

Vulnhub:Digitalword.local: FALL靶機滲透

將靶機按照圖中連接方式打開,fall在virtualBox中打開 信息收集 掃描得ip arp-scan -l 掃描端口 nmap -A -T4 -sV -p- 掃描目錄 gobuster dir -u http://192.168.117.160 -x php,txt,html -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt 一個一個…

4、網工軟考—VLAN配置—hybird配置

1、實驗環境搭建: 2、實驗過程 SW1: 先創建vlan2和vlan3 [Huawei-Ethernet0/0/2]port link-type hybrid //hybird端口 [Huawei-Ethernet0/0/2]port hybrid pvid vlan 2 [Huawei-Ethernet0/0/2]port hybrid untagged vlan 10 //撕掉vlan10的標簽 …

【OCR】技術

OCR圖像識別 一、OCR是什么二、Python中如何實現OCR1.簡單應用 三、OCR的核心步驟1.?圖像預處理?(提高識別準確率)2.?文字識別3.?輸出結果 四、OCR到的應用場景五、注意事項六、擴展學習 此貼用來更新在工作中遇到的一些圖片解析內容 一、OCR是什么 …

深入理解 dispatchEvent:前端事件觸發的藝術

dispatchEvent 是 DOM 元素的一個方法,用于手動觸發/派發一個事件。這個方法允許開發者以編程方式觸發事件,而不是等待用戶交互或瀏覽器自動觸發。 1.基本概念 作用:dispatchEvent 用于在指定的 DOM 節點上觸發一個事件 使用場景&#xff1…

2025年數智化電商產業帶發展研究報告260+份匯總解讀|附PDF下載

原文鏈接:https://tecdat.cn/?p41286 在數字技術與實體經濟深度融合的當下,數智化產業帶正成為經濟發展的關鍵引擎。 從云南鮮花產業帶的直播熱銷到深圳3C數碼的智能轉型,數智化正重塑產業格局。2023年數字經濟規模突破53.9萬億元&#xff…

【深度學習】【目標檢測】【OnnxRuntime】【C++】YOLOV5模型部署

【深度學習】【目標檢測】【OnnxRuntime】【C】YOLOV5模型部署 提示:博主取舍了很多大佬的博文并親測有效,分享筆記邀大家共同學習討論 文章目錄 【深度學習】【目標檢測】【OnnxRuntime】【C】YOLOV5模型部署前言Windows平臺搭建依賴環境模型轉換--pytorch轉onnxONNXRuntime推…

深入解析 JSON-RPC:從基礎到高級應用(附調用示例)

在當今的軟件開發領域,遠程過程調用(RPC)技術是實現分布式系統間通信的關鍵手段之一。JSON-RPC,作為一種基于 JSON 數據格式的輕量級 RPC 協議,因其簡潔性和高效性而備受青睞。本文將全面深入地探討 JSON-RPC 的核心概…

抽象代數:群論

系列筆記為本學期上抽象代數課整理的,持續更新。 群的相關定義 群的定義 群是一個帶有滿足結合律、單位元、逆元的二元運算的集合,記作 ( G , ? ) \left({G, \cdot}\right) (G,?)。若群運算滿足結合律,則該集合構成半群。如果該半群中含…

線程同步——讀寫鎖

Linux——線程同步 讀寫鎖 目錄 一、基本概念 1.1 讀寫鎖的基本概念 1.2 讀寫鎖的優點 1.3 讀寫鎖的實現 1.4 代碼實現 一、基本概念 線程同步中的讀寫鎖(Read-Write Lock),也常被稱為共享-獨占鎖(Shared-Exclusive Lock&a…

全面解析PRN文件:從原理到可視化的完整指南 【標簽打印】

文章目錄 一、PRN文件概述二、PRN文件結構深度解析2.1 文件頭配置2.1 繪圖指令詳解2.3 文本處理方案2.4 條碼/二維碼實現2.5 RFID指令集 三、實戰:PRN可視化工具開發3.1 基于Canvas的實現方案3.2 坐標轉換關鍵算法 四、常見問題解決方案4.1 內容偏移問題4.2 中文亂碼…

C++:函數(通識版)

一、函數的基礎 1.什么是函數?(獨立的功能單位) 函數是C中封裝代碼邏輯的基本單元,用于執行特定任務。 作用:代碼復用、模塊化、提高可讀性。 2、函數的基本結構 返回類型 函數名(參數列表) {// 函數體return 返回值…

sql注入語句學習

說明 注入漏洞作為登頂過web十大漏洞多次的漏洞,危害性不言而喻,其中sql注入就是注入漏洞常用的手段。其形成的原因是由于web在接收傳參數據時,對數據的過濾不夠嚴格,將其帶入到數據庫查詢中,導致用戶可以通過傳參一些…

云鑰科技多通道工業相機解決方案設計

項目應用場景分析與需求挑戰 1. 應用場景 ?目標領域?:工業自動化檢測(如精密零件尺寸測量、表面缺陷檢測)、3D立體視覺(如物體建模、位姿識別)、動態運動追蹤(如高速生產線監控)等。 ?核心…

離散的數據及參數適合用什么算法做模型

離散數據和參數適用的機器學習算法取決于具體任務(分類、回歸、聚類等)、數據特點(稀疏性、類別數量等)以及業務需求。以下是針對離散數據的常用算法分類和選擇建議: 1. 分類任務(離散目標變量) 經典算法 決策樹(ID3/C4.5/CART) 直接處理離散特征,無需編碼,可解釋性…

VMware 安裝 Ubuntu 實戰分享

VMware 安裝 Ubuntu 實戰分享 VMware 是一款強大的虛擬機軟件,廣泛用于多操作系統環境的搭建。本文將詳細介紹如何在 VMware 中安裝 Ubuntu,并分享安裝過程中的常見問題及解決方法。 1. 安裝前的準備工作 (1) 系統要求 主機操作系統:Windo…

基于Promise鏈式調用的多層級請求性能優化

代碼優化-循環嵌套關聯請求 1. 背景 在實際開發中,我們經常會遇到需要嵌套關聯請求的場景,比如: 獲取項目列表獲取項目詳情獲取項目進度 2. 問題 在這種場景下,我們可能會遇到以下問題: 串行請求瀑布流&#xff…

puppeteer+express服務端導出頁面為pdf

以下是開發步驟: 1、創建目錄 puppeteer_demo 目錄,打開目錄 初始化項目(命令為:npm init -y) 頁面如: 初始化后,項目目錄會出現 package.json 文件 2、安裝 puppeteer ,使用命令&a…

GPT-4o圖像生成功能:技術突破與隱憂并存

2025年3月25日,OpenAI正式推出GPT-4o原生圖像生成功能,宣稱其實現了“文本到圖像的終極跨越”。然而,這一被市場追捧的技術在短短72小時內便因用戶需求過載觸發限流,暴露出算力瓶頸與商業化矛盾的尖銳性。這場技術狂歡的背后&…