はじめに
この実験では、実行中のコンテナの状態を保存するためにdocker checkpoint createコマンドを使用する方法を学びます。まず、チェックポイント操作の対象としてシンプルな Ubuntu コンテナを起動します。
コンテナのセットアップ後、実行中のコンテナに対してチェックポイントを作成し、現在の状態を効果的にキャプチャします。その後、チェックポイントが正常に作成されたことを確認します。最後に、チェックポイントを作成する際にカスタムディレクトリを指定してチェックポイントデータを保存する方法を探求します。この実践的な演習を通じて、Docker コンテナチェックポイントの実用的な応用を実証します。
チェックポイント対象のコンテナを起動
このステップでは、後でチェックポイントを作成するためのシンプルな Docker コンテナを起動します。チェックポイント機能を使用すると、実行中のコンテナの状態を保存し、後で復元することができます。これはコンテナの移行、デバッグ、またはスナップショット作成に役立ちます。
まず、Docker Hub からubuntuイメージをプルする必要があります。このイメージは小さく、デモンストレーションに適しています。LabEx 環境でターミナルを開いてください。
docker pull ubuntu
イメージがダウンロードされていることを示す出力が表示されます。ダウンロードが完了したら、以下のコマンドでローカルにイメージが存在することを確認できます。
docker images
イメージのリストにubuntuが表示されていることを確認してください。
次に、ubuntuイメージを基にコンテナを起動します。コンテナ内でsleep infinityのようなシンプルなコマンドを実行し、コンテナを実行状態に保ちます。また、後で参照しやすいようにコンテナに名前を付けます。ここではmy-checkpoint-containerという名前にします。
docker run -d --name my-checkpoint-container ubuntu sleep infinity
-dフラグはコンテナをデタッチドモード(バックグラウンド)で実行します。--nameフラグはコンテナに名前を割り当てます。ubuntuは使用するイメージで、sleep infinityはコンテナを実行状態に保つための内部コマンドです。
コマンド実行後、Docker はコンテナの完全な ID を出力します。以下のコマンドでコンテナが実行中であることを確認できます。
docker ps
リストにmy-checkpoint-containerという名前のコンテナが表示され、ステータスがUpになっていることを確認してください。これでコンテナが実行中であり、次のステップでチェックポイントを作成する準備が整いました。
実行中のコンテナのチェックポイントを作成
このステップでは、前のステップで起動した実行中のコンテナに対してチェックポイントを作成します。コンテナのチェックポイント作成では、メモリ状態、プロセス、ファイルシステムの変更を含む現在の状態をディスクに保存します。これにより、コンテナを一時停止し、後でチェックポイント時点の正確な状態から再開することが可能になります。
チェックポイントを作成するには、docker checkpoint createコマンドを使用します。このコマンドにはコンテナ名とチェックポイント名の指定が必要です。ここではチェックポイント名をmy-first-checkpointとします。
docker checkpoint create my-checkpoint-container my-first-checkpoint
このコマンドは、Docker がコンテナの状態を保存するため、実行に少し時間がかかります。コマンドが成功すると、特に出力は表示されません。
チェックポイント作成後も、コンテナmy-checkpoint-containerは実行中のままです。チェックポイント作成はコンテナを停止せず、単に状態のスナップショットを作成するだけです。
次のステップでは、チェックポイントが正常に作成され利用可能であることを確認します。
作成されたチェックポイントを検証
このステップでは、前のステップで作成したチェックポイントが存在し、コンテナに関連付けられていることを確認します。Docker は特定のコンテナのチェックポイントを一覧表示するコマンドを提供しています。
my-checkpoint-containerのチェックポイントを一覧表示するには、docker checkpoint lsコマンドの後にコンテナ名を指定します。
docker checkpoint ls my-checkpoint-container
このコマンドは指定したコンテナで利用可能なチェックポイントのリストを表示します。出力にmy-first-checkpointが表示されるはずです。これにより、チェックポイントが正常に作成され、必要時にコンテナの状態を復元する準備が整っていることが確認できます。
チェックポイントを一覧表示できる機能は、特に 1 つのコンテナに対して複数のチェックポイントがある場合や、異なるコンテナのチェックポイントを管理する際に重要です。
次のステップでは、別のディレクトリにチェックポイントを作成する方法を探ります。
カスタムディレクトリでチェックポイントを作成
このステップでは、任意の特定ディレクトリにチェックポイントを作成する方法を学びます。デフォルトでは、Docker はチェックポイントを Docker データルートディレクトリ内の標準的な場所に保存します。しかし、異なるディスクや共有ストレージなど、別の場所にチェックポイントを保存したい場合もあるでしょう。
チェックポイントの保存先としてカスタムディレクトリを指定するには、docker checkpoint createコマンドに--checkpoint-dirフラグを使用します。まず、ホームディレクトリにチェックポイントを保存する新しいディレクトリを作成しましょう。
mkdir ~/project/my-checkpoints
次に、実行中のコンテナmy-checkpoint-containerに対して別のチェックポイントを作成しますが、今回は~/project/my-checkpointsディレクトリをチェックポイントの保存場所として指定します。この新しいチェックポイントをmy-second-checkpointと名付けます。
docker checkpoint create --checkpoint-dir ~/project/my-checkpoints my-checkpoint-container my-second-checkpoint
このコマンドは、~/project/my-checkpointsディレクトリ内にチェックポイントデータを作成します。このディレクトリの内容を確認してチェックポイントファイルを確認できます。
ls ~/project/my-checkpoints/my-second-checkpoint
チェックポイントプロセスによって作成された複数のファイルとディレクトリが表示されるはずです。
カスタムディレクトリを指定した場合でも、チェックポイントは依然としてコンテナに関連付けられています。コンテナのチェックポイントを再度一覧表示すると、my-first-checkpointとmy-second-checkpointの両方が表示されます。
docker checkpoint ls my-checkpoint-container
これは、Docker がチェックポイントの保存場所に関係なくチェックポイントを追跡していることを示しています。カスタムディレクトリを使用することで、チェックポイントデータの管理により柔軟性を持たせることができます。
まとめ
この実験では、実行中のコンテナの状態を保存するためにdocker checkpoint createコマンドを使用する方法を学びました。まず、docker run -d --name my-checkpoint-container ubuntu sleep infinityコマンドを使用してmy-checkpoint-containerという名前のシンプルなubuntuコンテナをデタッチモードで起動し、実行状態を確認しました。コンテナの状態はdocker psで確認しました。
その後、実行中のコンテナに対してチェックポイントを作成する手順に進みました。このプロセスではdocker checkpoint createコマンドを使用して、コンテナの現在の状態(メモリやプロセスを含む)をキャプチャし、後で復元できるようにしました。また、チェックポイントが正常に作成されたことを確認する方法や、チェックポイントデータを保存するカスタムディレクトリを指定する方法についても学びました。



