export
export命令用於持久化容器(不是鏡像)。所以,我們就需要通過以下方法得到容器ID: sudo docker ps -a
接着執行導出: sudo docker export <CONTAINER ID> > /home/export.tar
save
Save命令用於持久化鏡像(不是容器)。所以,我們就需要通過以下方法得到鏡像名稱: sudo docker images
接着執行保存: sudo docker save busybox-1 > /home/save.tar
使用export比使用save保存的文件要小一些
load 、save分別是導入、導出鏡像image, import、export分別是導入、導出容器container。
兩者的使用方法是一樣的,導入壓縮包生成鏡像 docker import - busybox-1-export:latest
docker import可以重新指定鏡像的名字 docker load < /home/save.tar
區別
那,它們之間到底存在什么不同呢?
- 首先,docker import可以重新指定鏡像的名字,docker load不可以
-
其次,我們發現導出后的版本會比原來的版本稍微小一些。那是因為導出后,會丟失歷史和元數據。執行下面的命令就知道了:
顯示鏡像的所有層(layer)sudo docker images --tree
執行命令,顯示下面的內容。正你看到的,導出后再導入(exported-imported)的鏡像會丟失所有的歷史,而保存后再加載(saveed-loaded)的鏡像沒有丟失歷史和層(layer)。這意味着使用導出后再導入的方式,你將無法回滾到之前的層(layer),同時,使用保存后再加載的方式持久化整個鏡像,就可以做到層回滾(可以執行docker tag 來回滾之前的層)。vagrant@Ubuntu-13:~$ sudo docker images --tree ├─f502877df6a1 Virtual Size: 2.489 MB Tags: busybox-1-export:latest └─511136ea3c5a Virtual Size: 0 B └─bf747efa0e2f Virtual Size: 0 B └─48e5f45168b9 Virtual Size: 2.489 MB └─769b9341d937 Virtual Size: 2.489 MB └─227516d93162 Virtual Size: 2.489 MB Tags: busybox-1:latest
