22장. 컨테이너 체크포인트 생성 및 복원
CRIU( checkpoint/Restore In Userspace)는 실행 중인 컨테이너 또는 개별 애플리케이션에 체크포인트를 설정하고 해당 상태를 디스크에 저장할 수 있는 소프트웨어입니다. 저장된 데이터를 사용하여 검사할 때 동일한 시점에 재부팅한 후 컨테이너를 복원할 수 있습니다.
커널은 AArch64에서 사전 복사 체크포인트를 지원하지 않습니다.
22.1. 로컬에서 컨테이너 체크포인트 생성 및 복원 링크 복사링크가 클립보드에 복사되었습니다!
이 예제는 각 요청 후에 증가된 단일 정수를 반환하는 Python 기반 웹 서버를 기반으로 합니다.
사전 요구 사항
-
container-tools
모듈이 설치되어 있습니다.
절차
Python 기반 서버를 생성합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 정의를 사용하여 컨테이너를 생성합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 컨테이너는 UBI 8(Universal Base Image)을 기반으로 하며 Python 기반 서버를 사용합니다.
컨테이너를 빌드합니다.
podman build . --tag counter
# podman build . --tag counter
Copy to Clipboard Copied! Toggle word wrap Toggle overflow files
counter.py
및Containerfile
은 컨테이너 빌드 프로세스(podman build
)에 대한 입력입니다. 빌드된 이미지는 로컬에 저장되며 태그카운터로 태그가 지정됩니다
.컨테이너를 root로 시작합니다.
podman run --name criu-test --detach counter
# podman run --name criu-test --detach counter
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 실행 중인 컨테이너를 모두 나열하려면 다음을 입력합니다.
podman ps
# podman ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES e4f82fd84d48 localhost/counter:latest 5 seconds ago Up 4 seconds ago criu-test
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 컨테이너의 IP 주소를 표시합니다.
podman inspect criu-test --format "{{.NetworkSettings.IPAddress}}"
# podman inspect criu-test --format "{{.NetworkSettings.IPAddress}}" 10.88.0.247
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 컨테이너로 요청을 보냅니다.
curl 10.88.0.247:8088 curl 10.88.0.247:8088
# curl 10.88.0.247:8088 0 # curl 10.88.0.247:8088 1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 컨테이너의 checkpoint를 만듭니다.
podman container checkpoint criu-test
# podman container checkpoint criu-test
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 시스템을 재부팅합니다.
컨테이너를 복원합니다.
podman container restore --keep criu-test
# podman container restore --keep criu-test
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 컨테이너로 요청을 보냅니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이제 결과가
0
에서 다시 시작되지 않지만 이전 값을 계속 진행합니다.
이렇게 하면 재부팅을 통해 전체 컨테이너 상태를 쉽게 저장할 수 있습니다.