6.3. RHEL コンテナーツールでの再現性の実現


Buildah、Podman、Skopeo などの RHEL コンテナーツールを使用してビルドの再現性を実現することで、ビルドプロセス中のタイムスタンプやその他の非決定的な要素を制御できます。

RHEL コンテナーツールは、再現性を確保するために、標準化されたデーモンレスのスクリプト制御可能なワークフローを提供します。このアプローチにより、一度ビルドしたコンテナーをどこでも一貫して実行できることが保証され、依存関係、環境、バージョン管理に関する潜在的な問題に対処できます。

Buildah
RHEL Buildah は、ビルドプロセスをきめ細かく制御することで、再現可能なコンテナービルドを実現します。不安定なタグ、ファイルシステムのメタデータ、ホスト依存データなどの非決定性の原因を軽減するための特別なオプションを備えています。Buildah は、再現可能なビルドのために固定タイムスタンプを使用します。

標準のタイムスタンプは、再現性を大幅に低下させます。デフォルトでは、ファイルの作成時刻と変更時刻は、ファイルがコンテナーレイヤーに追加された時点を反映します。Buildah を使用すると、このタイムスタンプをゼロにしたり、特定の固定値に設定したりできます。再現性を確保するために、以下のオプションを使用できます。

+

  • --rewrite-timestamp: このオプションは、レイヤーの内容に --source-date-epoch より後の日付ではないタイムスタンプを付けます。また、主に決定論的なビルドを実現する目的で、イメージの作成タイムスタンプとそのレイヤー内ファイルのタイムスタンプを制御します。
  • --source-date-epoch: このオプションは、以前の --timestamp オプションよりも柔軟性が高く、イメージレイヤー内のすべてのファイルに対して、特定の再現可能なタイムスタンプを定義できます。これは、イメージメタデータの作成日と履歴の日付に影響します。CLI フラグ、環境変数、またはビルド引数を使用して設定できます。フラグを設定すると、宣言された ARG が RUN 命令の環境で公開され、静的ホスト名が取得されます。また、コミットされたイメージ内のコンテナー ID フィールドがクリアされます。
Podman

podman build コマンドは、ユーザー向けのインターフェイスですが、実際のイメージ作成処理は Buildah ライブラリーに任せています。Podman は Buildah と同じコア機能を活用しているため、再現性のあるコンテナービルドを実現できます。Buildah は、ビルドプロセス中の非決定性の原因を制御することに重点を置いています。

Podman コマンドは、--rewrite-timestamp および --source-date-epoch オプションも受け付けます。また、ローカルキャッシュを無視して新規ビルドを実行するよう Podman に指示する --no-cache オプションもあります。このオプションを使用すると、コンテナーイメージがゼロから確実に再現できることを確認できます。

Skopeo
Skopeo は、変更可能なタグの代わりに変更不可能なイメージダイジェストを参照することで、再現可能なコンテナービルドを実現します。Skopeo は主にイメージの転送と管理を行います。Buildah などの他のツールが実際の再現可能なイメージの作成を処理します。
注記

--source-date-epoch および --rewrite-timestamp オプションを使用すると、ビルドの再現性が向上します。ただし、完全な再現性は保証されません。COPY 命令の --from オプションを使用して他のイメージから追加されたコンテンツは、RUN 命令の --mount=from= オプションを介してアクセスできます。ADD 命令を使用してダウンロードすることもできますが、参照したイメージタグが後で移動した場合や、指定された URL のコンテンツが変更された場合は、命令の内容が変わる可能性があります。

Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

Red Hat ドキュメントについて

Legal Notice

Theme

© 2026 Red Hat
トップに戻る