很喜歡玩docker,但最新遇到一個問題,公司給的新機器的dns有問題,導致pull不下來鏡像。
沒辦法了,沒有鏡像什么神馬都干不了,又不能花很多時間去搭建私有的鏡像庫,只有另尋辦法了。
廢話少說,經過探究,發現 docker 提供把鏡像導出export(保存save)為文件的機制,這樣就可以把鏡像copy到任意地方了。
1. 導出?export?- 導入?import
格式:docker export CONTAINER(容器)
使用 docker ps -a 查看本機已有的容器,如:
我們使用容器 furious_bell,現在要將這個容器保存為一個文件 myunbuntu-export-1204.tar
- docker?export?furious_bell?>?/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?9610cfc68e8d?>?/home/myubuntu-save-1204.tar??
現在就可以在任何裝 docker 的地方加載 剛保存的鏡像了
- docker?load?<?/home/myubuntu-save-1204.tar</span>??
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)???