[發明專利]一種基于CRIU的Docker容器熱遷移方法及系統有效
| 申請號: | 201710737534.6 | 申請日: | 2017-08-24 |
| 公開(公告)號: | CN107526626B | 公開(公告)日: | 2020-12-01 |
| 發明(設計)人: | 王麗娜;徐來;余榮威;鞠瑞;談誠 | 申請(專利權)人: | 武漢大學 |
| 主分類號: | G06F9/455 | 分類號: | G06F9/455;G06F9/48;H04L29/06;H04L29/08 |
| 代理公司: | 武漢科皓知識產權代理事務所(特殊普通合伙) 42222 | 代理人: | 魯力 |
| 地址: | 430072 湖*** | 國省代碼: | 湖北;42 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 基于 criu docker 容器 遷移 方法 系統 | ||
1.一種基于CRIU的Docker容器熱遷移方法,其特征在于,包括:
遷移組件步驟:用于完成遷移過程中針對容器所需的所有遷移操作,供遷移模塊調用以遷移容器
遷移步驟:用于在遷出端和遷入端建立網絡連接,并通過調用遷移組件模塊中的組件完成Docker容器的熱遷移;
清理步驟,包括:
遷出子步驟:在遷移完成后,對源主機和共享存儲中生成的中間文件進行刪除;無論容器遷移成功與否,遷移模塊均會執行;
遷出子步驟:在遷移完成后,對在目的主機使用過的中間文件進行刪除;無論容器遷移成功與否,遷移模塊均會執行;
所述遷移組件步驟具體包括:
步驟1、配置遷移子步驟
配置遷移子模塊主要負責從容器的配置文件中讀取配置,并根據這些配置信息重構出容器創建命令,用于在新創建的容器中重現原容器的配置;
步驟1.根據傳入的容器id讀取相應配置文件hostconfig.json和config.v2.json,并從config.v2.json配置文件中獲取Config.Tty的值,如果為true,則返回錯誤信息,該容器無法遷移,并結束本模塊運行,否則,繼續執行第2步;
步驟2.獲取容器配置,并將依據docker create命令選項的數據格式對獲取到的數據進行格式轉換,并將之保存到集合OPTIONS中;
步驟3.判斷工作模式是否是共享存儲環境下,如果是,將新鏡像的名稱設置為“容器id_migrate”,如果不是,設置為“私有倉庫ip:port/容器id_migrate”;
步驟4.利用OPTIONS和新鏡像的名稱合成docker create容器創建命令;
步驟2、運行狀態遷移子步驟,具體包括:
步驟2.1.在源節點基于“docker checkpoint create”命令對正在運行中的容器進行checkpoint操作并將生成的容器狀態信息發送到目的地址;
步驟2.2.在目的主機B上基于待遷移容器C的checkpoint文件,使用“dockercheckpoint create C cp_C--checkpoint-dir/目的地址“命令創建一個新容器C*中,并啟動容器C*以繼續運行;
當共享存儲時,目的地址為/mnt/checkpoints,當非共享存儲模式,目的地址為目的主機上的/migrate/checkpoints;
步驟3、Volume數據遷移子步驟,具體包括:
步驟3.1.遍歷Volume配置項,將其源路徑修改為目的地址/Volume目的路徑,將源路徑:新的源路徑作為鍵值對添加到待遷移Volume集合中;
步驟3.2.使用Rsync將待遷移Volume集合中的Volume源路徑中數據復制到新的數據源路徑;
步驟3.3.如果容器處于運行狀態,使用inotify監控原容器的Volume源路徑,當其發生變化時,使用Rsync同步到新的數據源路徑中;
步驟3.4.一旦容器停止運行,將剩余未同步的數據同步到新的數據源路徑中;
步驟4、文件系統遷移子步驟:
如果被遷移的是只讀容器,鏡像遷移只需要在進行checkpoint停機操作前,在目的主機上預先從Docker倉庫拉取(pull)指定的鏡像即可;
如果被遷移的容器不是只讀容器,則分為共享存儲和非共享存儲,具體步驟如下:
共享存儲模式:
步驟1.使用export命令將容器文件系統保存到共享存儲中的images文件夾;
步驟2.利用import命令從目的主機將共享存儲中的tar文件導入目的主機的Dockerdaemon中,生成新的鏡像img*;
步驟3.使用docker create命令基于鏡像img*創建用于恢復的容器;
非共享存儲模式:
預存儲:私有倉庫PrR(private Registry)預先存儲有整個集群中所有容器的初始創建鏡像;
步驟1.目的主機從PrR拉取(pull)待遷移容器C的初始創建鏡像img;與此同時,在源主機對待遷移容器C進行commit操作,將容器對文件系統的最新修改保存到更新后的鏡像img*中;
步驟2.commit操作完成后,源主機將鏡像img*推送到私有倉庫PrR中;
步驟3.在目的主機拉取鏡像img*,并根據該鏡像重新創建容器C*。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于武漢大學,未經武漢大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201710737534.6/1.html,轉載請聲明來源鉆瓜專利網。





