
Используя VirtualBox или KVM, я могу сохранить состояние гостевой виртуальной машины, перезагрузить хост и затем возобновить гостевую.
Как я могу это сделать, если мой гость — это всего лишь контейнер, а не виртуальная машина?
решение1
Это можно сделать с помощью CRIU.
Обратите внимание, что это больше, чем он можеттеоретическибыть сделано, но если ваши контейнеры делают что-то хоть немного сложное (например, запускают systemd, который использует пространства имен, имеет tty и т. д.),это, скорее всего, потерпит неудачу.
Более практичный ответ — на данном этапе это невозможно сделать с помощью универсальных контейнеров. Возможно, в будущем, но это маловероятно, учитывая текущие темпы развития CRIU.
Конкретные команды различаются в зависимости от того, используете ли вы чистый LXC или демон управления LXD.
LXC
Если вы используете сырой 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
.