Docker Hub における不変タグ

アクセスレベル: ベータ

不変タグ (immutable tags) は、Docker Hub にイメージを公開した後においても、特定のバージョンを不変のまま保つための手段を提供するものです。 この機能は、意図せずに重要な特定バージョンのイメージを上書きしてしまうことを防止することで、コンテナーデプロイ作業の一貫性と信頼性を維持します。

不変タグとは何か

不変タグとはイメージタグの一種であって、Docker Hub にプッシュされた後は、上書きや削除ができなくなるものです。 特定バージョンのイメージを、そのライフサイクルを通して同一のものとして保持し続けるものです。 そして以下を提供します。

  • バージョンの一貫性
  • 再ビルド
  • 予期しない上書きの防止
  • セキュリティとコンプライアンスの向上

不変タグの有効化

リポジトリに対して不変タグ機能を有効にするには以下を行います。

  1. Docker Hub にサインインします。
  2. My Hub > Repositories を選びます。
  3. 不変タグを有効にしたいリポジトリを選びます。
  4. Settings > General を開きます。
  5. Tag mutability settings (タグの変更設定) において、以下のいずれかのオプションを選びます。
    • All tags are mutable (Default) (全タグを変更可能 (デフォルト)): どのタグも、別イメージへの参照を行うような変更を可能とします。 この場合、イメージを新たに生成することなくタグの参照先を変更することができます。
    • All tags are immutable (全タグの変更不可): 既に生成済みの別イメージに対して、タグを更新してそのイメージを指し示すような変更はできません。 これによって一貫性を確保し、意図しない変更を防止します。 ここには latest タグも含まれます。
    • Specific tags are immutable (特定タグの変更不可): イメージ生成後に変更を不可とするタグを指定します。 その際には正規表現による指定が可能です。
  6. Save を選びます。

本機能を有効化すると、特定のイメージに対応するタグがすべてロックされます。 そして各タグは同一イメージバージョンを常に指し示すものとなり、修正することはできなくなります。

メモ

その正規表現機能の実装は Go 言語の regexp ぱっけーい に準拠しています。 これは RE2 エンジンに基づいています。 詳細は RE2 正規表現文法 を参照してください。

不変タグの活用

不変タグを有効化したら以下の点に留意します。

  • 新たなイメージのプッシュにあたって、同一のタグ名を用いることはできません。
  • 新たなイメージバージョンについては、常に新しいタグ名を用いなければなりません。

更新したイメージをプッシュする際には、新たなタグを生成してリポジトリにプッシュすることになります。