[RA] CRIU 체크포인트 예제

SeongWon Oh·2021년 8월 31일
0

[RA] Docker, CRIU

목록 보기
7/7
post-thumbnail

1. 숫자 0부터 카운팅 하는 docker 컨테이너 생성

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'

2. 컨테이너가 출력하는 로그 확인

아래의 코드를 통해 해당 container가 출력하는 log를 확인할 수 있다.

sudo docker logs [컨테이너 이름]

sudo docker logs counter

3. 체크포인트 생성

docker checkpoint create [컨테이너 이름][체크포인트이름]

$ sudo docker checkpoint create counter cp1

3.1. 체크포인트 생성 (경로 지정)

sudo docker checkpoint create --checkpoint-dir [저장 경로][컨테이너 이름] [체크포인트 이름]

sudo docker checkpoint create --checkpoint-dir /home/seongwon97/Downloads/checkpoint counter cp1

4. 체크포인트 복구

docker start --checkpoint [체크포인트 이름][컨테이너 이름]

$ docker start --checkpoint cp1 counter

4.1. 채크포인트 복구 (경로 지정)

sudo docker start --checkpoint-dir=[파일 경로] --checkpoint [체크포인트 이름][컨테이너 이름]

sudo docker start --checkpoint-dir=/home/seongwon97/Downloads/checkpoint/ --checkpoint cp3 counter

5. 체크포인트 마이그레이션

명령어들을 정리하면 다음과 같다.
복구 명령어에서 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에서는 복구하려는 기존 컨테이너와 동일한 컨테이너가 필요로 한다.
아래 코드를 통해 동일한 컨테이너를 생성하고 저장해둔 체크포인트 파일을 통해 복구를 하면 된다.

profile
블로그 이전했습니다. -> https://seongwon.dev/

0개의 댓글