docker容器跨服務器的遷移


docker的備份方式有export和save兩種。

export是當前的狀態,針對的是容器,docker save 是針對鏡像images。

export

找出要備份容器的ID

 

[root@wls12c ~]$ docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                   NAMES
037b847bf093        centos              "/bin/bash"         3 minutes ago       Exited (0) 2 minute      naughty_davinci     

 

 

備份

[root@wls12c ~]$ docker export 037b847bf093 >centos_demo.tar
[root@wls12c ~]$ du -sh centos_demo.tar 
195M    centos_demo.tar

export是把容器打成一個tar包。

 

恢復

把剛才備份的centos_demo.tar打包到目標服務器

[root@11g ~]$ cat centos_demo.tar |docker import - centos:demo
8962416d1362f289ceb9848e21a95f03dc34eb6f234c8f98f1a6e1ec7fe34a67


查看新生成的鏡像

[root@11g ~]$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
centos              demo                8962416d1362        24 seconds ago      196.7 MB

 

save

得到鏡像名稱

[root@wls12c ~]$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
centos              latest              d83a55af4e75        3 weeks ago         196.7 MB

 

備份鏡像

[root@wls12c ~]$ docker save centos >centos_save.tar

 

恢復鏡像

[root@11g ~]$ docker load <centos_save.tar 

 

查看恢復的鏡像

[root@wls12c ~]$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             
centos              latest              d83a55af4e75        3 weeks ago         196.7 MB

 

兩者的區別:

導出后再導入(exported-imported)的鏡像會丟失所有的歷史,而保存后再加載(saveed-loaded)的鏡像沒有丟失歷史和層 (layer)。這意味着使用導出后再導入的方式,你將無法回滾到之前的層(layer),同時,使用保存后再加載的方式持久化整個鏡像,就可以做到層回 滾(可以執行docker tag <LAYER ID> <IMAGE NAME>來回滾之前的層)。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM