22.3. 시스템 간에 컨테이너 마이그레이션
컨테이너에서 실행 중인 애플리케이션의 상태를 손실하지 않고 실행 중인 컨테이너를 한 시스템에서 다른 시스템으로 마이그레이션할 수 있습니다. 이 예는 카운터
가 태그된 로컬에서 컨테이너 체크포인트 생성 및 복원 섹션의 컨테이너 를 기반으로 합니다.
podman 컨테이너 체크포인트 및
명령을 사용하여 시스템 간에 컨테이너를 마이그레이션하는 것은 아래와 같이 시스템 구성이 완전히 일치하는 경우에만 지원됩니다.
podman container
restore
- podman 버전
- OCI 런타임(runc/crun)
- 네트워크 스택(CNI/Netavark)
- cgroups 버전
- 커널 버전
- CPU 기능
더 많은 기능이 있는 CPU로 마이그레이션할 수 있지만 사용 중인 특정 기능이 없는 CPU로 마이그레이션할 수 없습니다. 체크포인트(CRIU)를 수행하는 하위 수준 툴에서는 CPU 기능 호환성을 확인할 수 있습니다. https://criu.org/Cpuinfo.
사전 요구 사항
-
container-tools
meta-package가 설치되어 있습니다. 컨테이너를 로컬에서 사용할 수 없는 경우 Podman이 레지스트리에서 컨테이너를 자동으로 다운로드하므로 다음 단계는 필요하지 않습니다. 이 예에서는 레지스트리를 사용하지 않습니다. 이전에 빌드 및 태그된 컨테이너를 내보내야 합니다(로컬에서 컨테이너 체크포인트 생성 및 복원 참조).
이전에 빌드한 컨테이너를 내보냅니다.
# podman save --output counter.tar counter
내보낸 컨테이너 이미지를 대상 시스템(
other_host
)에 복사합니다.# scp counter.tar other_host:
대상 시스템에서 내보낸 컨테이너를 가져옵니다.
# ssh other_host podman load --input counter.tar
이제 이 컨테이너 마이그레이션의 대상 시스템에 로컬 컨테이너 스토리지에 저장된 컨테이너 이미지가 동일합니다.
절차
컨테이너를 root로 시작합니다.
# podman run --name criu-test --detach counter
컨테이너의 IP 주소를 표시합니다.
# podman inspect criu-test --format "{{.NetworkSettings.IPAddress}}" 10.88.0.247
컨테이너로 요청을 보냅니다.
# curl 10.88.0.247:8080 0 # curl 10.88.0.247:8080 1
컨테이너의 검사점을 만들고 검사점 이미지를
tar.gz
파일로 내보냅니다.# podman container checkpoint criu-test --export /tmp/chkpt.tar.gz
검사점 아카이브를 대상 호스트에 복사합니다.
# scp /tmp/chkpt.tar.gz other_host:/tmp/
대상 호스트 (
other_host
)에서 checkpoint를 복원하십시오.# podman container restore --import /tmp/chkpt.tar.gz
대상 호스트의 컨테이너로 요청을 보냅니다(
other_host
):# *curl 10.88.0.247:8080* 2
그 결과 상태 저장 컨테이너가 상태를 손실하지 않고 한 시스템에서 다른 시스템으로 마이그레이션되었습니다.