
Mit VirtualBox oder KVM kann ich den Status der Gast-VM speichern, den Host neu starten und dann den Gast fortsetzen.
Wie kann ich das tun, wenn mein Gast nur ein Container und keine VM ist?
Antwort1
Dies ist mit CRIU möglich.
Beachten Sie, dass es mehr ist, als es kanntheoretischdurchgeführt werden, aber wenn Ihre Container irgendetwas auch nur annähernd Komplexes tun (wie etwa systemd ausführen, das Namespaces verwendet, ein TTY hat, usw.),es wird wahrscheinlich scheitern.
Die praktischere Antwort ist, dass dies derzeit nicht mit Allzweckcontainern möglich ist. Vielleicht in der Zukunft, aber angesichts des aktuellen Entwicklungstempos von CRIU ist dies unwahrscheinlich.
Die spezifischen Befehle unterscheiden sich je nachdem, ob Sie reines LXC oder den LXD-Verwaltungsdaemon verwenden.
LXC
Wenn Sie LXC im Rohzustand verwenden, benötigen Sie das lxc-checkpoint
Tool. Es gibt einige Beispieleim CRIU-Wiki, Unddie lxc-checkpoint-manpages.
bitte beachten Sieder CRIU-Wiki-Eintragempfiehlt, dass Sie Ihre Container auf besondere Weise konfigurieren, vermutlich um zu versuchen, die Probleme mit der Namespace- und Gerätevererbung zu vermeiden:
lxc.console = none
lxc.tty = 0
lxc.cgroup.devices.deny = c 5:1 rwm
Dies kann ein Ausschlusskriterium sein, wenn Sie diese Geräte in Ihrem Container benötigen.
So erstellen Sie einen Prüfpunkt:
lxc-checkpoint -s -D /path/to/checkpoint -n containername
(Hinweis: -s
Der Container wird nach der Prüfpunkterstellung gestoppt.)
So stellen Sie einen Prüfpunkt wieder her:
lxc-checkpoint -r -D /path/to/checkpoint -n containername
Der Prüfpunkt bleibt bestehen, bis Sie ihn löschen.
LXD
Wenn Sie eine Snap-Installation von LXD verwenden, müssen Sie zuerst CRIU aktivieren:
snap set lxd criu.enable=true
systemctl reload snap.lxd.daemon
So stoppen Sie einen Container zustandsgesteuert:
lxc stop --stateful containername
Wenn Sie späterlxc start
ohne --stateless
, sollte der vorherige Zustand wiederhergestellt werden.
lxc snapshot
Sie können mit / auch manuell Status-Snapshots erstellen lxc restore
.