1. 程式人生 > >docker容器的遷移

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.使用映象執行容器

使用剛剛匯入的映象,執行為一個容器:
這裡寫圖片描述

檢視容器執行狀況:
這裡寫圖片描述
進入容器:
這裡寫圖片描述