호스트 OS 재부팅이 필요한데, 실행 중인 컨테이너의 상태를 저장하고, 호스트 시스템 재부팅 후 저장된 시점부터 컨테이너를 다시 시작하려면 어떻게 해야 하나요?
답변1
Docker의 실험적 옵션을 구성합니다.
$ sudo nano /etc/docker/daemon.json
다음에 추가
{
"experimental": true
}
Ctrl+X를 누르고 Y를 선택한 다음 Enter를 눌러 새 파일을 저장합니다.
또는
$ sudo echo '{"experimental": true}' >> /etc/docker/daemon.json
도커 서비스를 다시 시작합니다.
$ sudo service docker restart
확인해보세요
$ docker version
실제로 실험이 활성화된 경우
CRIU 패키지 설치
$ sudo apt-get install criu
CRIU에서 Docker 체크포인트를 사용하여 간단한 시나리오를 시도해 보세요.
docker run --security-opt=seccomp:unconfined --name cr -d busybox /bin/sh -c 'i=0; while true; do echo $i; i=$(expr $i + 1); sleep 1; done'
값 확인:
docker logs cr
컨테이너에 대한 체크포인트를 만듭니다.
docker checkpoint create --leave-running=true cr checkpoint0
컨테이너를 잠시 실행한 후 로그를 다시 확인하세요.
$ docker logs cr
이제 컨테이너를 중지합니다.
$ docker stop cr
체크포인트에서 컨테이너를 다시 시작/다시 생성합니다.
docker start --checkpoint checkpoint0 cr
로그를 확인하세요.
docker logs cr
체크포인트가 생성된 값으로 로그가 복원된 것을 확인할 수 있습니다.