docker的導入導出

在 docker 的概念中, 有兩套導入導出的概念. 分別是export 和 import還有save 和 load 百度搜索??它們的區(qū)別, 有一篇被引用了很多次的文章雖然講的很詳細, 還加入了一些實驗驗證, 但是試驗中為了實現(xiàn)同一個效果而使用了 commit 命令更改了鏡像內(nèi)容. 理解和使用起來可能會有些偏差, 本文將以最簡單明了的方式介紹 docker 中的兩套導入導出功能

export&import save&load
導出對象 容器 鏡像
導入對象 tar 包 tar 包
導出對象 鏡像 鏡像
鏡像層數(shù) 一層 多層

下面我們來一行一行的解釋

操作對象

操作的對象不同, export 和 import 是用來導入導出容器用的, 而 save 和 load 是用來導入導出鏡像用的.

例如: 你需要把 A 機器上的 容器遷移到 B 機器, 且 容器中有重要的數(shù)據(jù)需要隨之一起遷移的, 就可以使用 export 和 import 參數(shù)來導入和導出

例如: 你的服務器不能 pull 下來某個鏡像, 但是你有一臺海外的機器, 你可以在海外的那臺機器上把需要的鏡像 pull 下來, 然后把該鏡像通過 save 命令導出為一個 tar 包, 再將 tar 包拉回到本地導入

所以, 從功能定位上, 你就記住 save 和 load參數(shù)是用來遷移鏡像的這個場景就行了, 另外的 export 和 import當然就是用來遷容器的

導出對象

在導出對象這一點, exportsave 導出的文件形式都是一樣的, 兩者都是導出為一個 tar 包

導入對象

在導入上, importload 通過 tar 包導入的都是一個鏡像

導入的鏡像層數(shù)

最大的區(qū)別就在這里, 通過export 和 import導出的容器形成鏡像時, 該鏡像只有一層

通過saveload 導出的鏡像保留了原鏡像所有的層次結構, 導出時原鏡像有幾層, 導入的時候就還是有幾層

想導出容器, 但是還想保留層次結構怎么辦?

導出容器, 很快就想到唯一一個可以導出容器的工具 export

但是又想保留底層鏡像的層次結構, 那么 export 就不符合需求了

想想導出帶層次結構的工具就只有鏡像導出工具 save 了, 但是容器在鏡像層之上還有一層新的數(shù)據(jù)怎么一起導出去呢?

這個時候就需要引入一個新的參數(shù) commit, 用來保存容器現(xiàn)有的狀態(tài)為一個新的鏡像

比如在 A 機器上運行的 容器是基于 甲方乙方 這個鏡像跑起來的, 那么我就可以通過 commit 參數(shù), 將 容器的所有內(nèi)容保存為一個新的鏡像, 名字叫 私人訂制 (內(nèi)含一梗哦??) 最后我再通過鏡像導出工具 save 就可以完整的將 私人訂制鏡像(也就是 甲容器 )導出為一個 tar 包了

而且包含了 X+1 層鏡像, X 層是原鏡像 甲方乙方 的所有鏡像層數(shù), 1是容器 多的那一層可寫層的鏡像

總結

總結來說我也希望大家使用 docker 能遵循 docker 的設計初衷, 運行一個無狀態(tài)的容器. 如果是無狀態(tài)的容器, 就不會產(chǎn)生 想導出容器, 但是還想保留層次結構怎么辦? 這樣的奇葩問題了.

所以最后還是要再次強調(diào):

  • export 和 import 是用來導出導入容器用的, 導出的是容器的文件系統(tǒng), 導出后的鏡像只有一層
  • save 和 load 是用來導出導入鏡像用的, 導出后保持著原鏡像的層次結構

這里我沒有詳細介紹這四個參數(shù)的具體用法, 因為網(wǎng)上已經(jīng)有很詳細的文章介紹啦, 一下就是百度經(jīng)常能搜到的關于 docker 導入導出的文章

https://my.oschina.net/zjzhai/blog/225112

具體用法可以參考以上文章, 但是概念理解, 我還是覺得自己寫的比較清楚??, 因為我沒有故意構造出導出容器和導出鏡像結果相同的場景


參考文檔

docker export 官方文檔https://docs.docker.com/engine/reference/commandline/export/

docker save 官方文檔https://docs.docker.com/engine/reference/commandline/save/

docker commit 官方文檔https://docs.docker.com/engine/reference/commandline/commit/

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容