1. 程式人生 > >docker 映象匯入匯出(import export)和載入儲存(load,save)

docker 映象匯入匯出(import export)和載入儲存(load,save)

很喜歡玩docker,但最新遇到一個問題,公司給的新機器的dns有問題,導致pull不下來映象。

<QQ圖片20150529102110.png>

沒辦法了,沒有映象什麼神馬都幹不了,又不能花很多時間去搭建私有的映象庫,只有另尋辦法了。

廢話少說,經過探究,發現 docker 提供把映象匯出export(儲存save)為檔案的機制,這樣就可以把映象copy到任意地方了。

1. 匯出 export - 匯入 import

格式:docker export CONTAINER(容器)

使用 docker ps -a 檢視本機已有的容器,如:

我們使用容器 jovial_elion,現在要將這個容器儲存為一個檔案 myunbuntu-export-1204.tar

docker export jovial_elion > /home/myubuntu-export-1204.tar

匯出完成後,就可以使用 import 匯入了

docker import - /home/myubuntu-export-1204.tar

2.儲存save - 載入 load

格式:docker save IMAGE(映象)

使用 docker images 檢視本機已有的映象(也可以使用 docker commit <CONTAIN-ID> <IMAGE-NAME>命令把一個正在執行的容器儲存為映象),如:

這裡有個基礎映象:ubuntu:12.04,現在要將這個映象儲存為一個檔案myubuntu-save-1204.tar

docker save cd6d8154f1e1 > /home/myubuntu-save-1204.tar

有點慢,稍微等待一下,沒有任何warn資訊就表示儲存OK。cd6d8154f1e1 是映象ID

現在就可以在任何裝 docker 的地方載入 剛儲存的映象了

docker load < /home/myubuntu-save-1204.tar

3.匯出 export 與 儲存 save 的區別

 (1).export匯出的映象檔案大小  小於 save儲存的映象

 (2).export 匯出(import匯入)是根據容器拿到的映象,再匯入時會丟失映象所有的歷史,所以無法進行回滾操作(docker tag <LAYER ID> <IMAGE NAME>);而save儲存(load載入)的映象,沒有丟失映象的歷史,可以回滾到之前的層(layer)。(檢視方式:docker images --tree)

注:匯入載入進來覺得不合適可以使用 docker rm 容器ID 、 docker rmi 映象ID 來刪掉。

       移除所有的容器和映象(大掃除):

docker kill $(docker ps -q) ; docker rm $(docker ps -a -q) ; docker rmi $(docker images -q -a) 

參考:

http://www.tuicool.com/articles/emYVRzv http://my.oschina.net/zjzhai/blog/225112 http://www.sxt.cn/u/756/blog/5339