Counter라는 컨테이너 이름으로 0부터 1초마다 숫자를 높여서 카운트하는 BusyBox 컨테이너를 생성
$ sudo docker create --name counter busybox /bin/sh -c 'i=0; while true; do echo $i; i=$(expr $i + 1); sleep 1; done'
아래의 코드를 통해 해당 container가 출력하는 log를 확인할 수 있다.
sudo docker logs [컨테이너 이름]
sudo docker logs counter
docker checkpoint create [컨테이너 이름][체크포인트이름]
$ sudo docker checkpoint create counter cp1
sudo docker checkpoint create --checkpoint-dir [저장 경로][컨테이너 이름] [체크포인트 이름]
sudo docker checkpoint create --checkpoint-dir /home/seongwon97/Downloads/checkpoint counter cp1
docker start --checkpoint [체크포인트 이름][컨테이너 이름]
$ docker start --checkpoint cp1 counter
sudo docker start --checkpoint-dir=[파일 경로] --checkpoint [체크포인트 이름][컨테이너 이름]
sudo docker start --checkpoint-dir=/home/seongwon97/Downloads/checkpoint/ --checkpoint cp3 counter
명령어들을 정리하면 다음과 같다.
복구 명령어에서 shim error가 발생한다면 지정된 체크포인트 폴더 안에 따로 만들어진 컨테이너id가 만들어졌는지 아닌지 체크 후 이에 맞게 경로 재설정해야한다.
$ docker run -d --name looper2 --security-opt seccomp:unconfined busybox \
/bin/sh -c 'i=0; while true; do echo $i; i=$(expr $i + 1); sleep 1; done'
# wait a few seconds to give the container an opportunity to print a few lines, then
$ docker checkpoint create --checkpoint-dir=/tmp looper2 checkpoint2
$ docker create --name looper-clone --security-opt seccomp:unconfined busybox \
/bin/sh -c 'i=0; while true; do echo $i; i=$(expr $i + 1); sleep 1; done'
$ docker start --checkpoint-dir=/tmp --checkpoint=checkpoint2 looper-clone
체크포인트를 복구하는 PC에서는 복구하려는 기존 컨테이너와 동일한 컨테이너가 필요로 한다.
아래 코드를 통해 동일한 컨테이너를 생성하고 저장해둔 체크포인트 파일을 통해 복구를 하면 된다.