docker鏡像導入導出的兩種方法

一、使用 export 和 import

1,查看本機的容器

這兩個命令是通過容器來導入、導出鏡像。首先我們使用 docker ps -a 命令查看本機所有的容器。

2,導出鏡像

(1)使用 docker export 命令根據容器 ID 將鏡像導出成一個文件。

docker export f299f501774c > hangger_server.tar

(2)上面命令執行後,可以看到文件已經保存到當前的 docker 終端目錄下。

3,導入鏡像

(1)使用 docker import 命令則可將這個鏡像文件導入進來。

docker import - new_hangger_server < hangger_server.tar

(2)執行 docker images 命令可以看到鏡像確實已經導入進來瞭。

二、使用 save 和 load

1,查看本機的容器

這兩個命令是通過鏡像來保存、加載鏡像文件的。首先我們使用 docker images 命令查看本機所有的鏡像。

2,保存鏡像

(1)下面使用 docker save 命令根據 ID 將鏡像保存成一個文件。

docker save 0fdf2b4c26d3 > hangge_server.tar

(2)我們還可以同時將多個 image 打包成一個文件,比如下面將鏡像庫中的 postgres 和 mongo 打包:

docker save -o images.tar postgres:9.6 mongo:3.4

3,載入鏡像

使用 docker load 命令則可將這個鏡像文件載入進來。

docker load < hangge_server.tar

附:兩種方案的差別

特別註意:兩種方法不可混用。
如果使用 import 導入 save 產生的文件,雖然導入不提示錯誤,但是啟動容器時會提示失敗,會出現類似"docker: Error response from daemon: Container command not found or does not exist"的錯誤。

1,文件大小不同

export 導出的鏡像文件體積小於 save 保存的鏡像

2,是否可以對鏡像重命名

docker import 可以為鏡像指定新名稱
docker load 不能對載入的鏡像重命名

3,是否可以同時將多個鏡像打包到一個文件中

docker export 不支持
docker save 支持

4,是否包含鏡像歷史

export 導出(import 導入)是根據容器拿到的鏡像,再導入時會丟失鏡像所有的歷史記錄和元數據信息(即僅保存容器當時的快照狀態),所以無法進行回滾操作。
而 save 保存(load 加載)的鏡像,沒有丟失鏡像的歷史,可以回滾到之前的層(layer)。

5,應用場景不同

docker export 的應用場景:主要用來制作基礎鏡像,比如我們從一個 ubuntu 鏡像啟動一個容器,然後安裝一些軟件和進行一些設置後,使用 docker export 保存為一個基礎鏡像。然後,把這個鏡像分發給其他人使用,比如作為基礎的開發環境。
docker save 的應用場景:如果我們的應用是使用 docker-compose.yml 編排的多個鏡像組合,但我們要部署的客戶服務器並不能連外網。這時就可以使用 docker save 將用到的鏡像打個包,然後拷貝到客戶服務器上使用 docker load 載入。

到此這篇關於docker鏡像導入導出的兩種方法的文章就介紹到這瞭,更多相關docker鏡像導入導出內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: