
VirtualBox 또는 KVM을 사용하면 게스트 VM의 상태를 저장하고 호스트를 재부팅한 다음 게스트를 재개할 수 있습니다.
내 게스트가 VM이 아닌 컨테이너일 경우 어떻게 해야 합니까?
답변1
CRIU를 이용하면 가능합니다.
그 이상일 수 있으니 참고하세요이론적으로하지만 컨테이너가 원격으로 복잡한 작업을 수행하는 경우(예: 네임스페이스를 사용하고 tty가 있는 systemd를 실행하는 등...)아마 실패할 거야.
보다 실용적인 대답은 현 단계에서는 범용 컨테이너로는 수행할 수 없다는 것입니다. 아마도 미래에는 그럴 수도 있지만 현재 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
LXD의 스냅 설치를 사용하는 경우 먼저 CRIU를 활성화해야 합니다.
snap set lxd criu.enable=true
systemctl reload snap.lxd.daemon
상태 저장 컨테이너를 중지하려면 다음 안내를 따르세요.
lxc stop --stateful containername
나중에lxc start
없이 --stateless
, 이전 상태를 재개해야 합니다.
lxc snapshot
/ 를 사용하여 상태 저장 스냅샷을 수동으로 생성할 수도 있습니다 lxc restore
.