docker容器熱遷移

系統(tǒng)環(huán)境

ubuntu 18.04
docker(我的version 是docker-ce 20.10.14)

安裝crui

參考1:https://gist.github.com/justincormack/1902f2eb7ac085fa69a8577a70c6f27f
依賴包安裝

apt update
apt upgrade
apt install build-essential
apt install pkg-config
apt install libnet-dev python-yaml libaio-dev
apt install libprotobuf-dev libprotobuf-c0-dev protobuf-c-compiler protobuf-compiler python-protobuf libnl-3-dev libcap-dev python-future

安裝criu

curl -O -sSL http://download.openvz.org/criu/criu-version.tar.bz2 #我裝的3.16
tar xjf criu-version.tar.bz2 
cd criu-3.10
make
cp ./criu/criu /usr/local/bin

檢查criu是否裝好


配置docker

echo "{\"experimental\": true}" >> /etc/docker/daemon.json
systemctl restart docker

容器熱遷移例子

參考1:https://zhuanlan.zhihu.com/p/269552404(docker start --checkpoint-dir)這一步可能會報錯。解決辦法見參考2中的issue
參考2:https://github.com/moby/moby/issues/37344

創(chuàng)建容器looper2

docker run -d --name looper2 --security-opt seccomp:unconfined busybox /bin/sh -c 'i=0; while true; do echo $i; i=$(expr $i + 1); sleep 1; done'

看下日志


docker checkpoint create --checkpoint-dir=***** looper2 checkpoint2

執(zhí)行這句之后looper2容器會停止運行


創(chuàng)建遷移后的容器

docker create --name looper-clone --security-opt seccomp:unconfined busybox /bin/sh -c 'i=0; while true; do echo $i; i=$(expr $i + 1); sleep 1; done'

可能會報錯的地方

docker start --checkpoint-dir=/home/xty/container/checkpoint2/ --checkpoint=checkpoint2 looper-clone

根據(jù)參考2,解決辦法為

mv /home/xty/container/checkpoint2/ /var/lib/docker/containers/5e1b38c17d42a8382596bf0c631c52d9486627b75df588557a85c27e8b62b93e/checkpoints
docker start --checkpoint=checkpoint2 looper-clone

看一下容器遷移后的日志:


最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容