Red Hat Training
A Red Hat training course is available for RHEL 8
第22章 コンテナーチェックポイントの作成および復元
CRIU (Checkpoint/Restore In Userspace) は、実行中のコンテナーまたは個々のアプリケーションでチェックポイントを設定して、その状態をディスクに保存するソフトウェアです。保存したデータを使用して、再起動後に、チェックポイントの時点にコンテナーを復元できます。
カーネルは、AArch64 でのコピー前のチェックポイント設定をサポートしていません。
22.1. ローカルでのコンテナーチェックポイントの作成および復元
以下の例は、要求ごとにインクリメントする整数を 1 つ返す Python ベースの Web サーバーをベースとしています。
前提条件
-
container-tools
モジュールがインストールされている。
手順
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()
以下の定義でコンテナーを作成します。
# cat Containerfile FROM registry.access.redhat.com/ubi8/ubi COPY counter.py /home/counter.py RUN useradd -ms /bin/bash counter RUN yum -y install python3 && chmod 755 /home/counter.py USER counter ENTRYPOINT /home/counter.py
コンテナーは Universal Base Image (UBI 8) をベースとしており、Python ベースのサーバーを使用します。
コンテナーをビルドします。
# podman build . --tag counter
counter.py
ファイルおよびContainerfile
ファイルは、コンテナービルドプロセス (podman build
) の入力情報です。ビルドされたイメージはローカルに保存され、counter
でタグ付けされます。root でコンテナーを起動します。
# podman run --name criu-test --detach counter
実行中のコンテナーのリストを表示するには、次のコマンドを実行します。
# podman ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES e4f82fd84d48 localhost/counter:latest 5 seconds ago Up 4 seconds ago criu-test
コンテナーの IP アドレスを表示します。
# podman inspect criu-test --format "{{.NetworkSettings.IPAddress}}" 10.88.0.247
要求をコンテナーに送信します。
# curl 10.88.0.247:8088 0 # curl 10.88.0.247:8088 1
コンテナーのチェックポイントを作成します。
# podman container checkpoint criu-test
- システムを再起動します。
コンテナーを復元します。
# podman container restore --keep criu-test
要求をコンテナーに送信します。
# curl 10.88.0.247:8080 2 # curl 10.88.0.247:8080 3 # curl 10.88.0.247:8080 4
結果は
0
で開始あれるのではなく、以前の値で継続されます。
これにより、再起動後に完全なコンテナーの状態を簡単に保存できます。
関連情報