Skip to content
Latchkey

イメージ digest とは?正確なビットを固定する

イメージ digest はコンテンツハッシュ(sha256:...)で、正確なイメージ内容を一意かつ恒久的に識別します - タグと違い、決して新しいものを指すことはできません。

タグは便利ですが可変です: 今日の myapp:latest は明日には別のバイト列になり得ます。digest はその曖昧さを取り除きます。イメージの内容そのものから計算されるため、同じ digest は常に同じバイト列を意味します。サプライチェーンの完全性のためには、digest で pin することがゴールドスタンダードです。

コンテンツアドレス指定

digest はイメージ manifest の SHA-256 ハッシュです。layer やメタデータを変えれば digest も変わります。だからこそ入力が同一の 2 つの build は同じ digest を生成し - そして digest が正確な内容の証明になるのです。

digest で参照する

repo@sha256:abc123... の形で pin します。例えば node@sha256:...。参照にタグがないため、upstream の何ものもあなたの足元で内容をすり替えることはできません。

digest とタグ

タグはメンテナが指し先を変えられる可動なラベルですが、digest は不変です。人間可読性のためにはタグを、テストしたものを正確に deploy する保証が必要なときには digest を使いましょう。

digest が真価を発揮する場面

  • build が再現可能になるようベースイメージを pin する。
  • pipeline がテストした正確なイメージを deploy する。
  • digest を参照する来歴(provenance)と attestation。

CI/CD における digest

堅牢な pipeline はイメージをビルドし、その digest を捕捉し、その digest(浮動するタグではなく)を deploy ステップに渡します - テストされた artifact が deploy されるものであることを保証します。マネージド runner はこれらの pull を高速に保ち、一時的なレジストリエラーをリトライします。

重要なポイント

  • digest は、正確で不変なイメージ内容を名指しする SHA-256 ハッシュです。
  • repo@sha256:... で pin します。タグは動き得ますが、digest は動きません。
  • テストしたものをそのまま出荷するため、build と deploy の間で digest を受け渡しましょう。

関連ガイド