docker容器的遷移


 

 

 

 

 

0.背景

需要把雲服務器上用docker搭建的大數據集群遷移到本地的主機上。大數據集群有一個master主節點和slave01、slave02兩個計算節點。

  • 雲上服務器和本地的主機的數量都只有一台,是采用docker虛擬化的方式搭建大數據集群。
  • 要求遷移后數據不會丟失。

1.用export&import 還是 save & load ?

export&import 和 save & load 是docker中的兩組命令,我們先主要看看他們的區別:

類型 作用 作用對象 能否保留數據 導出的內容 主要的應用場景
export & import 用來將container的文件系統進行打包的 container 不可以 一個Linux系統的文件目錄 制作基礎鏡像
save & load 用來將一個或者多個image打包 image(container實際上也可以,但其實際上作用的是container下的image) 可以 一個分層的文件系統(相對於前者比較大,因為多層文件系統中可能有東西是重合的) 打包多個鏡像

具體的區別可以查看這篇博客docker save與docker export的區別,寫得很清晰。 
基於以上對比,save&load 方式可以保留數據,所以使用save&load這種方式。

 

2.定制鏡像

由於save&load實際操作的是image,所以導出之前,要先使用commit命令把容器中相對於其底層鏡像的修改,提交為一層文件系統,與原有的image結合過程一個新的image。新的image中會包含所有修改的內容。 
(ps:這種制作鏡像的方式不被提倡,因為這樣做會保留一些元數據信息,導致image過大,如果想用於制作一個簡潔的鏡像,需使用DockerFile的方式定制鏡像,這里不做詳述) 
這樣以一個容器salve02為例,將它提交到一個叫做theslave02的鏡像上,再打上標簽 

提交完成后我們可以看到這么一個image: 

 

 

3.導出鏡像

把鏡像導出為一個輸出文件: 

查看導出的文件:

4.傳輸文件

將導出的輸出文件通過scp的方式發送到本地的主機上: 

5.導入鏡像

在本地主機上,將受到的文件導入為鏡像文件:

查看鏡像文件: 

6.使用鏡像運行容器

使用剛剛導入的鏡像,運行為一個容器: 

查看容器運行狀況: 

進入容器: 

 

參考文章: https://blog.csdn.net/weixin_36343850/article/details/80553680 


免責聲明!

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



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