¿Cómo guardar el estado de un contenedor LXC en ejecución?

¿Cómo guardar el estado de un contenedor LXC en ejecución?

Usando VirtualBox o KVM, puedo guardar el estado de la VM invitada, reiniciar el host y luego reanudar el invitado.
¿Cómo puedo hacer eso si mi invitado es solo un contenedor y no una VM?

Respuesta1

Esto se puede hacer con CRIU.

Tenga en cuenta que es más que puedeteóricamentepor hacer, pero si sus contenedores hacen algo remotamente complejo (como, por ejemplo, ejecutar systemd que usa espacios de nombres, tiene un tty, etc...),probablemente fallará.

La respuesta más práctica es que no se puede hacer con contenedores de uso general en esta etapa. Quizás en el futuro, pero es poco probable dado el ritmo actual de desarrollo de CRIU.

Los comandos específicos difieren dependiendo de si estás usando LXC sin formato o el demonio de administración LXD.


LXC

Si está utilizando LXC sin formato, querrá la lxc-checkpointherramienta. Hay algunos ejemplosen la wiki de CRIU, ylas páginas de manual de lxc-checkpoint.

tenga en cuentala entrada wiki de CRIUrecomienda configurar sus contenedores de una manera especial, presumiblemente para tratar de evitar los problemas de herencia de dispositivos y espacios de nombres:

lxc.console = none
lxc.tty = 0
lxc.cgroup.devices.deny = c 5:1 rwm

Esto puede terminar siendo un factor decisivo si necesita estos dispositivos en su contenedor.

Para crear un punto de control:

lxc-checkpoint -s -D /path/to/checkpoint -n containername

(la nota -sdetiene el contenedor después de la creación del punto de control)

Para restaurar un punto de control:

lxc-checkpoint -r -D /path/to/checkpoint -n containername

El punto de control permanecerá activo hasta que lo elimines.


LXD

Si está utilizando una instalación instantánea de LXD, primero deberá habilitar CRIU:

snap set lxd criu.enable=true
systemctl reload snap.lxd.daemon

Para detener un contenedor con estado:

lxc stop --stateful containername

si luegolxc start sin --stateless, debería reanudar el estado anterior.

También puede crear manualmente instantáneas con estado con lxc snapshot/ lxc restore.

información relacionada