
VirtualBox または KVM を使用すると、ゲスト VM の状態を保存し、ホストを再起動してからゲストを再開できます。
ゲストが VM ではなくコンテナーのみである場合、これを実行するにはどうすればよいですか?
答え1
これはCRIUで実行できます。
それはそれ以上のものであることに注意してください理論的には実行できますが、コンテナが少しでも複雑な処理を実行する場合(たとえば、名前空間を使用したり、tty を持つ systemd を実行したりする場合など)、失敗する可能性が高い。
より現実的な答えは、現段階では汎用コンテナでは実行できないということです。将来的には可能になるかもしれませんが、CRIU の現在の開発ペースを考えると可能性は低いでしょう。
具体的なコマンドは、生の LXC を使用しているか、LXD 管理デーモンを使用しているかによって異なります。
ルクセンブルク
生のLXCを使用している場合は、ツールが必要になりますlxc-checkpoint
。いくつかの例がありますCRIUウィキ、 そしてlxc-checkpoint のマニュアルページ。
ご注意くださいCRIU ウィキエントリ名前空間とデバイスの継承の問題を回避するために、コンテナを特別な方法で構成することを推奨します。
lxc.console = none
lxc.tty = 0
lxc.cgroup.devices.deny = c 5:1 rwm
コンテナ内にこれらのデバイスが必要な場合、これが決定的な要因になる可能性があります。
チェックポイントを作成するには:
lxc-checkpoint -s -D /path/to/checkpoint -n containername
(-s
チェックポイントの作成後にコンテナを停止することに注意してください)
チェックポイントを復元するには:
lxc-checkpoint -r -D /path/to/checkpoint -n containername
チェックポイントは削除するまで残ります。
翻訳
LXD のスナップ インストールを使用している場合は、まず CRIU を有効にする必要があります。
snap set lxd criu.enable=true
systemctl reload snap.lxd.daemon
コンテナをステートフルに停止するには:
lxc stop --stateful containername
後でlxc start
それなし --stateless
以前の状態に戻るはずです。
lxc snapshot
/を使用してステートフル スナップショットを手動で作成することもできますlxc restore
。