はじめに
この実験では、docker buildx history rm コマンドを使用してビルドレコードを管理する方法を学びます。ビルドレコードは、ビルドプロセスとその結果を追跡するために非常に有用です。
まず、docker buildx build を使用してビルドレコードを作成し、そのメタデータを保存します。次に、docker buildx ls を使用して既存のビルドレコードを一覧表示し、その詳細を確認する方法を学びます。最後に、docker buildx history rm コマンドを使用して特定のビルドレコードを削除したり、すべてのビルドレコードをクリアしたりする練習を行います。
ビルドレコードの作成
このステップでは、docker buildx build コマンドを使用してビルドレコードを作成する方法を学びます。ビルドレコードは、ビルドコンテキスト、ビルド引数、生成されたイメージ ID など、ビルド結果を追跡するのに役立ちます。
まず、ビルドに使用するシンプルな Dockerfile を作成しましょう。プロジェクトディレクトリに移動し、以下の内容でDockerfileという名前のファイルを作成します:
FROM alpine
CMD ["echo", "Hello, Docker!"]
この Dockerfile は非常にシンプルです。alpineベースイメージを使用し、"Hello, Docker!"と表示するコマンドを定義しています。
次に、この Dockerfile からイメージをビルドし、ビルドレコードを作成します。docker buildx buildコマンドに--metadata-fileフラグを指定して、ビルドレコードをファイルに保存します。
docker buildx build . --metadata-file build-record.json -t my-hello-image
このコマンドの説明:
docker buildx build .は、カレントディレクトリの Dockerfile からイメージをビルドするよう Docker に指示します--metadata-file build-record.jsonは、ビルドレコードをbuild-record.jsonというファイルに保存するよう指定します-t my-hello-imageは、生成されたイメージにmy-hello-imageというタグを付けます
コマンドを実行後、ビルドプロセスを示す出力が表示されます。カレントディレクトリにbuild-record.jsonというファイルが作成されます。このファイルには JSON 形式のビルドレコードが含まれています。
build-record.jsonファイルの内容は、catコマンドで確認できます:
cat build-record.json
これにより、ビルドに関する情報を含むビルドレコードの JSON 内容が表示されます。
ビルドレコードの一覧表示
このステップでは、docker buildx ls コマンドを使用して既存のビルドレコードを一覧表示する方法を学びます。このコマンドにより、作成済みのすべてのビルドレコードを確認できます。
ビルドレコードを一覧表示するには、以下のコマンドを実行します:
docker buildx ls
このコマンドを実行すると、利用可能なビルドレコードに関する情報がテーブル形式で表示されます。出力には通常、ビルダー名、使用されたドライバー、およびステータスが含まれます。
docker buildx build を実行した際に使用されるデフォルトビルダーのエントリが表示されるはずです。前のステップで作成したビルドレコードは、このビルダーに関連付けられています。
docker buildx ls コマンドは、ビルド環境と関連するビルドレコードの概要を把握するのに役立ちます。
特定ビルドレコードの削除
このステップでは、docker buildx prune コマンドを使用して特定のビルドレコードを削除する方法を学びます。これは不要になった個々のビルドレコードをクリーンアップするのに役立ちます。
特定のビルドレコードを削除するには、まずその ID を特定する必要があります。ビルドレコード ID は最初のステップで作成したbuild-record.jsonファイルに記載されています。catコマンドでファイルを開きます:
cat build-record.json
JSON 出力内の"BuildRecord"セクションを探してください。このセクション内に"ID"フィールドがあります。この ID の値をコピーします。これは長い文字列になります。
次に、docker buildx pruneコマンドに--keep-storageフラグとビルドレコード ID を指定して、特定のレコードを削除します。<BUILD_RECORD_ID>はコピーした実際の ID に置き換えてください。
docker buildx prune --keep-storage <BUILD_RECORD_ID>
ここで使用している--keep-storageフラグは、ビルドキャッシュではなくビルドレコードを削除することを示すために使用されます。
コマンド実行後、ビルドレコードが削除されたことを確認する出力が表示されます。
ビルドレコードが削除されたことを確認するには、再度ビルドレコードを一覧表示してみてください:
docker buildx ls
削除した特定のビルドレコードは、リストに表示されなくなっているはずです。
全ビルドレコードの削除
このステップでは、docker buildx pruneコマンドに--allフラグを指定してすべてのビルドレコードを削除する方法を学びます。これはすべてのビルドレコードを一括でクリーンアップする便利な方法です。
すべてのビルドレコードを削除するには、次のコマンドを実行します:
docker buildx prune --all --keep-storage --force
このコマンドの各オプションについて:
docker buildx pruneはビルド関連データを削除するコマンドです--allはすべてのビルドレコードを削除することを指定します--keep-storageはビルドキャッシュではなくビルドレコードを削除することを示します--forceは確認プロンプトをスキップし、スクリプトや対話ができない環境で有用です
コマンド実行後、ビルドレコードが削除されたことを示す出力が表示されます。
すべてのビルドレコードが削除されたことを確認するには、再度ビルドレコードを一覧表示します:
docker buildx ls
デフォルトのビルダーエントリのみが表示され、特定のビルドレコードはリストされなくなっているはずです。
これで Docker ビルドレコードの管理に関する実験は完了です。ビルドレコードの作成、一覧表示、削除方法を学びました。
まとめ
この実験では、docker buildxを使用して Docker ビルドレコードを管理する方法を学びました。まずシンプルな Dockerfile を作成し、docker buildx buildコマンドに--metadata-fileフラグを指定してイメージをビルドし、ビルドレコードを JSON ファイルに保存しました。次に、docker buildx lsコマンドを使用して既存のビルドレコードを一覧表示し、ビルド情報を確認する方法を学びました。
また、特定のビルドレコードを削除するdocker buildx history rm <record_id>コマンドと、すべてのビルドレコードを一括削除するdocker buildx history rm --allコマンドについても学習しました。これらの手順は、Docker Buildx におけるビルドレコードのライフサイクル管理を示しています。



