Docker遷移資料卷,遷移容器詳解 測試通過

2021-09-11 17:21:00 字數 1702 閱讀 3926

最近工作上有需求要遷移現在docker上的容器和資料到新的伺服器上, 但網上搜了很多部落格, 真正實用且有效的寥寥無幾, 最後自己爬了不少坑乾掉了這個需求, 寫部落格記錄一下操作過程, 希望後來的小夥伴能夠少走些彎路! 接下來的操作根據mongodb資料庫的遷移舉例!

docker inspect mongo

mounts屬性就是告訴我們容器相關的資料卷資訊 :

"mounts": [

,

注:在volumes資訊裡面也可以看到

docker run -i -t --volumes-from mongo-yapi -v $(pwd):/backup mongo tar cvf /backup/backupdata.tar /data/db

相關option說明:

--volumes-from : 表示引用哪個容器的資料卷

$(pwd) : 獲取當前目錄路徑

backup : 執行備份指令

tar /backup/backupdata.tar /data/db : 打包容器內需保留的資料目錄

轉移過程省略, ftp一鍵傳過去即可

docker run -itd -v /data/db --name data1 mongo /bin/bash
建立臨時容器用空目錄對映到之前要保留的資料目錄下, 切記-v 後不要建立資料卷對映到容器目錄, 要保證目錄的乾淨完整以便於等會兒恢復資料不會再遭遇未知的bug

docker run --rm --volumes-from data1 -v $(pwd):/backup mongo tar xvf /backup/backupdata.tar
docker inspect data1
查詢上一步建立的臨時容器data1的資料卷

docker run -d --name mongo-yapi -v mongo_data_yapi:/data/db mongo
引用臨時容器資料卷構建新的容器, 搞定後刪除臨時容器即可! 此時執行已經成功了!!!!!!!!!!!!!!!! 烟花, 禮炮, 義大利炮!!!

docker run -tid --rm --volumes-from mongo-yapi -v $(pwd):/backup mongo tar cvf /backup/backup.tar /var/volume1 /var/volume2
/var/volume1 /var/volume2 即容器內對映的兩個目錄

docker run -tid -v /data/db -v /data/configdb --name data1 mongo /bin/bash
docker run --rm --volumes-from data1 -v $(pwd):/backup mongo tar xvf /backup/backup.tar -c /

/data/configdb

/data/db

-c屬性是根據備份好的打包資料指定好同樣的的對映到容器內的目錄

@@完結!

如果你遇到了其他的問題或者你也和我一樣對技術充滿熱情, 歡迎隨時與我交流! wechat: s13037657871

遷移資料方案

我們在做系統的時候,有時候會遇到遷移資料或者處理任務 任務量又比較大 比如把redis的資料取出來做一些操作,然後處理完的資料在存到hbase 我們需要考慮到資料處理過程中失敗情況,需要處理高併發去執行,具體怎麼設計,怎麼做呢,有一種簡單的方式如下 1我們先把任務資料存到redis任務佇列裡 2定義...

oracle遷移資料

往本地oracle的 user使用者遷移資料,生成遷移日誌 imp user user 127.0.0.1 orcl file f user 20191203.dmp statistics none fromuser user touser user log d user.log建立使用者 user...

redis migrate 遷移資料

從源redis例項原子的傳送乙個key到目標例項。成功後,刪除源例項中的key,在目標例項中生成。如果目標例項中已經存在將要傳送的鍵,會報鍵已存在錯誤。命令的格式為 migrate host port key destination db timeout keys key1 key2.具體的例子 m...