GitLabコンテナレジストリ

イメージリポジトリ名による検索はGitLab 13.0で導入されました。

統合されたコンテナレジストリを使って、GitLabプロジェクトごとにコンテナイメージを保存することができます。

GitLabインスタンスでコンテナレジストリを有効にするには、管理者向けドキュメントを参照してください。

note
Docker HubからDockerコンテナイメージをプルする場合は、GitLab依存プロキシを使うことでレート制限を回避し、パイプラインを高速化することができます。Dockerレジストリについての詳細は、https://docs.docker.com/registry/introduction/をご覧ください。

コンテナレジストリを見る

プロジェクトまたはグループのコンテナレジストリを表示できます。

  1. 左側のサイドバーで、「検索」を選択するか、または「移動」を選択して、プロジェクトまたはグループを見つけます。
  2. 使用例:
    • グループの場合は、「オペレーション」>「コンテナレジストリ」を選択します。
    • プロジェクトの場合は、[デプロイ] > [コンテナレジストリ]を選択します。

コンテナイメージを検索、並べ替え、フィルタリング、削除できます。ブラウザから URL をコピーすることで、フィルタリングされたビューを共有できます。

非公開プロジェクトのコンテナレジストリにアクセスできるのは、プロジェクトまたはグループのメンバーだけです。非公開レジストリからダウンロードしたコンテナイメージは、共有 Runner で他のユーザーが利用できる場合があります。

プロジェクトが公開されている場合、コンテナレジストリも公開されます。

コンテナレジストリで、特定のコンテナイメージのタグを表示します。

コンテナレジストリのタグ詳細ページを使用して、指定したコンテナイメージに関連付けられているタグのリストを表示できます:

  1. 左側のサイドバーで、「検索」を選択するか、または「移動」を選択して、プロジェクトまたはグループを見つけます。
  2. 使用例:
    • グループの場合は、「オペレーション」>「コンテナレジストリ」を選択します。
    • プロジェクトの場合は、[デプロイ] > [コンテナレジストリ]を選択します。
  3. コンテナイメージを選択します。

各タグの詳細(公開日、消費ストレージ量、マニフェストおよび設定ダイジェストなど)を表示できます。

このページでは、タグの検索、並べ替え(タグ名による)、フィルタリング、削除ができます。フィルタリングされたビューは、ブラウザから URL をコピーすることで共有できます。

コンテナレジストリからのコンテナイメージの使用

コンテナレジストリにホストされているコンテナイメージをダウンロードして実行するには、以下の手順に従います:

  1. 左側のサイドバーで、「検索」を選択するか、または「移動」を選択して、プロジェクトまたはグループを見つけます。
  2. 使用例:
    • グループの場合は、「オペレーション」>「コンテナレジストリ」を選択します。
    • プロジェクトの場合は、[デプロイ] > [コンテナレジストリ]を選択します。
  3. 作業したいコンテナイメージを見つけて、Copy を選択します。

    Container Registry image URL

  4. コピーしたリンクでdocker run を使用します:

    docker run [options] registry.example.com/group/project/image [arguments]
    
note
非公開リポジトリからコンテナイメージをダウンロードするには、コンテナレジストリで認証する必要があります。

コンテナイメージの実行に関する詳細は、Dockerドキュメントを参照してください。

コンテナイメージの命名規則

コンテナイメージは、以下の命名規則に従ってください:

<registry URL>/<namespace>/<project>/<image>

例えば、プロジェクト名がgitlab.example.com/mynamespace/myproject, の場合、コンテナイメージの名前は . gitlab.example.com/mynamespace/myproject

コンテナ・イメージ名の末尾には、2 レベルまで名前を追加できます。

たとえば、myproject というプロジェクトに含まれるコンテナイメージの名前として、これらはすべて有効です:

registry.example.com/mynamespace/myproject:some-tag
registry.example.com/mynamespace/myproject/image:latest
registry.example.com/mynamespace/myproject/my/image:rc1

コンテナレジストリリポジトリの移動と名前の変更

コンテナイメージをプッシュした後では、既存のコンテナレジストリリポジトリの移動や名前の変更はサポートされていません。コンテナイメージは、リポジトリパスと一致するパスに格納されます。コンテナレジストリでリポジトリの移動や名前の変更を行うには、既存のコンテナイメージをすべて削除する必要があります。この既知の問題を回避するためのコミュニティからの提案は、イシュー18383 で共有されています。

プロジェクトのコンテナレジストリの無効化

コンテナレジストリはデフォルトで有効になっています。

しかし、プロジェクトのコンテナレジストリを削除することができます:

  1. 左のサイドバーで「検索」または「移動」を選択してあなたのプロジェクトを検索します。
  2. 設定] > [全般]を選択します。
  3. Visibility, project features, permissionsセクションを展開し、Container Registryを無効にします。
  4. 変更を保存を選択します。

プロジェクトのサイドバーから[デプロイ]>[コンテナレジストリ]のエントリが削除されます。

コンテナレジストリの可視性の変更

GitLab 14.2で導入されました

デフォルトでは、コンテナレジストリはプロジェクトにアクセスできるすべての人に表示されます。しかし、プロジェクトのコンテナレジストリの可視性を変更することができます。

この設定がユーザーに与える権限の詳細については、コンテナレジストリの表示権限を参照してください。

  1. 左のサイドバーで「検索」または「移動」を選択してあなたのプロジェクトを検索します。
  2. 設定] > [全般]を選択します。
  3. 可視性、プロジェクト機能、権限」のセクションを展開します。
  4. コンテナ・レジストリ]で、ドロップダウンリストからオプションを選択します:

    • Everyone With Access(デフォルト):コンテナレジストリは、プロジェクトにアクセスできるすべての人に表示されます。プロジェクトが公開されている場合、コンテナレジストリも公開されます。プロジェクトが内部または非公開の場合、コンテナレジストリも内部または非公開になります。

    • プロジェクトメンバーのみ:コンテナレジストリは、少なくともレポーターロールを持つプロジェクトメンバーだけが見ることができます。この可視性は、コンテナレジストリの可視性を[Everyone With Access]に設定した非公開プロジェクトの動作に似ています。

  5. 変更を保存を選択します。

コンテナ レジストリの表示権限

コンテナレジストリを表示してコンテナイメージをプルする機能は、コンテナレジストリの可視権限によって制御されます。可視性は、UIまたはAPI の可視性設定で変更できます。コンテナレジストリの更新やコンテナイメージのプッシュまたは削除などのその他の権限は、この設定の影響を受けません。ただし、コンテナレジストリを無効にすると、すべてのコンテナレジストリオペレーションが無効になります。

  匿名
(インターネット上の全員)
ゲストレポーター、開発者、メンテナー、オーナー
公開プロジェクトで、コンテナレジストリの可視性
Everyone With Access (UI) 、またはenabled (API)
コンテナレジストリ
を表示し、画像をプルします。
はいはいはい
公開プロジェクトで、コンテナレジストリの可視性
が、Only Project Members (UI) に設定されているか、またはprivate (API)
コンテナレジストリ
を表示し、画像をプルします。
なしなしはい
コンテナレジストリの可視性
Everyone With Access (UI) に設定されている内部プロジェクト、またはenabled (API)
コンテナレジストリ
を表示し、画像をプルします。
なしはいはい
コンテナレジストリの可視性
Only Project Members (UI) に設定されている内部プロジェクト、またはprivate (API)
コンテナレジストリ
を表示し、画像をプルします。
なしなしはい
非公開プロジェクトで、コンテナレジストリの可視性(
)をEveryone With Access((UI) )またはenabled (API)
コンテナレジストリ
を表示し、画像をプルします。
なしなしはい
コンテナレジストリ可視性
プロジェクトメンバーのみ (UI) に設定された非公開プロジェクト、またはprivate (API)
コンテナレジストリ
を表示し、画像をプルします。
なしなしはい
コンテナレジストリのあるすべてのプロジェクトdisabled コンテナレジストリに関するすべてのオペレーションなしなしなし

対応画像タイプ

コンテナレジストリはDocker V2とOpen Container Initiative(OCI)イメージフォーマットをサポートしています。

OCIのサポートは、Helm 3+のChartパッケージのようなOCIベースのイメージフォーマットをレジストリでホストできることを意味します。GitLabAPIと UI にはイメージフォーマットの区別がありません。イシュー38047では、Helmからこの区別に対応しています。