검색

22장. 컨테이너 체크포인트 생성 및 복원

download PDF

CRIU(Checkpoint/Restore In Userspace)는 실행 중인 컨테이너 또는 개별 애플리케이션에서 체크포인트를 설정하고 해당 상태를 디스크에 저장할 수 있는 소프트웨어입니다. 저장된 데이터를 사용하여 체크포인트가 발생했을 때 동시에 컨테이너를 재부팅한 후 컨테이너를 복원할 수 있습니다.

주의

커널은 AArch64에서 사전 복사 체크포인트를 지원하지 않습니다.

22.1. 로컬에서 컨테이너 체크포인트 생성 및 복원

이 예제는 각 요청 후에 증가되는 단일 정수를 반환하는 Python 기반 웹 서버를 기반으로 합니다.

사전 요구 사항

  • container-tools meta-package가 설치되어 있습니다.

절차

  1. Python 기반 서버를 생성합니다.

    # cat counter.py
    #!/usr/bin/python3
    
    import http.server
    
    counter = 0
    
    class handler(http.server.BaseHTTPRequestHandler):
        def do_GET(s):
            global counter
            s.send_response(200)
            s.send_header('Content-type', 'text/html')
            s.end_headers()
            s.wfile.write(b'%d\n' % counter)
            counter += 1
    
    
    server = http.server.HTTPServer(('', 8088), handler)
    server.serve_forever()
  2. 다음 정의를 사용하여 컨테이너를 생성합니다.

    # cat Containerfile
    FROM registry.access.redhat.com/ubi9/ubi
    
    COPY counter.py /home/counter.py
    
    RUN useradd -ms /bin/bash counter
    
    RUN dnf -y install python3 && chmod 755 /home/counter.py
    
    USER counter
    ENTRYPOINT /home/counter.py

    컨테이너는 UBI(Universal Base Image)를 기반으로 하며 Python 기반 서버를 사용합니다.

  3. 컨테이너를 빌드합니다.

    # podman build . --tag counter

    파일 counter.pyContainerfile 은 컨테이너 빌드 프로세스(podman build)에 대한 입력입니다. 빌드된 이미지는 로컬에 저장되고 태그 카운터 로 태그가 지정됩니다.

  4. 컨테이너를 root로 시작합니다.

    # podman run --name criu-test --detach counter
  5. 실행 중인 모든 컨테이너를 나열하려면 다음을 입력합니다.

    # podman ps
    CONTAINER ID  IMAGE  COMMAND  CREATED   STATUS  PORTS NAMES
    e4f82fd84d48  localhost/counter:latest  5 seconds ago  Up 4 seconds ago  criu-test
  6. 컨테이너의 IP 주소를 표시합니다.

    # podman inspect criu-test --format "{{.NetworkSettings.IPAddress}}"
    10.88.0.247
  7. 컨테이너로 요청을 보냅니다.

    # curl 10.88.0.247:8088
    0
    # curl 10.88.0.247:8088
    1
  8. 컨테이너에 대한 checkpoint를 생성합니다.

    # podman container checkpoint criu-test
  9. 시스템을 재부팅합니다.
  10. 컨테이너를 복원합니다.

    # podman container restore --keep criu-test
  11. 컨테이너로 요청을 보냅니다.

    # curl 10.88.0.247:8080
    2
    # curl 10.88.0.247:8080
    3
    # curl 10.88.0.247:8080
    4

    이제 결과가 0 에서 다시 시작되지 않지만 이전 값을 계속 진행합니다.

이렇게 하면 재부팅을 통해 전체 컨테이너 상태를 쉽게 저장할 수 있습니다.

추가 리소스

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.