実行中の LXC コンテナの状態を保存するにはどうすればよいですか?

実行中の LXC コンテナの状態を保存するにはどうすればよいですか?

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

関連情報