Working with the container registry

コンテナー レジストリを使用する

コンテナー レジストリは、個々のリポジトリにリンクされたイメージを持つワークスペース内で動作します。イメージの権限は、以下で説明しているように、リポジトリ ロール (管理者、書き込み、読み取り) と一致しています。

リポジトリ権限

説明

管理

Can create a new package linked to a repository, allowing the package to inherit the repository's permissions, and can also delete container images.

書き込み

Can push container images to the Bitbucket package registry, and can also delete container image tags.

読み取り

Bitbucket パッケージ レジストリにプッシュされたコンテナー イメージをプルします。

パッケージを作成する

レジストリに対してコンテナー イメージをプッシュ/プルする前に、まず Bitbucket のコンテナー イメージを表すパッケージを作成する必要があります。

  1. 上部のナビゲーション バーで [作成] を選択し、[作成] ドロップダウン メニューを開きます。

  2. [作成] ドロップダウンから [パッケージ] を選択します。

  3. パッケージの名前を [パッケージ名] フィールドに入力します。

  4. Select the Repository to link to dropdown and select the repository that you want to link the package to. Note: The package inherits the permissions of the repository which then grants users the same permissions to access the package.

  5. [送信] を選択し、パッケージを作成します。

コンテナー イメージをレジストリにプッシュする

コンテナー イメージをプッシュするには、イメージ参照にコンテナー レジストリのホスト名 (crg.apkg.io) とプッシュ先の Bitbucket ワークスペースのスラッグの両方を含める必要があります。次の例は、docker CLI を使用して、my-image という名前のイメージをビルドしてワークスペース my-workspace にプッシュする方法を示しています。次の例も、Dockerfile と同じディレクトリ内にいることを想定しています。

docker build --tag crg.apkg.io/my-workspace/my-image:latest . docker push crg.apkg.io/my-workspace/my-image:latest

コンテナー イメージをプルする

次の例は、docker pull を使用してコンテナー イメージをプルする方法を示しています。上の例と同じイメージ名とワークスペースを使用します。

docker pull crg.apkg.io/my-workspace/my-image:latest

コンテナー イメージを表示する

コンテナー レジストリ内のイメージは、ワークスペース、プロジェクト、およびリポジトリから表示できます。ワークスペース、プロジェクト、またはリポジトリにプッシュされたイメージのリストが表示されます。

docker push コマンドが完了してからイメージがページに表示されるまでに、多少の遅延が生じる場合があります。

  • To view the images within the workspace, select Packages on the left sidebar. This opens the Packages page which lists all the images within the workspace.

  • プロジェクト内のイメージを表示するには、イメージのリストを表示したいプロジェクト内の左側のサイドバーで [パッケージ] を選択します。

  • リポジトリ内のイメージを表示するには、イメージのリストを表示したいリポジトリ内の左側のサイドバーで [パッケージ] を選択します。

イメージの詳細を表示する

  • イメージを表示する: パッケージのリストからイメージ名を選択すると、そのイメージの詳細が表示されます。

  • タグを表示する: タグ名を選択すると、そのイメージに関連付けられているタグに固有の詳細が表示されます。

Pipelines でコンテナー レジストリを使用する

Bitbucket Pipelines からイメージをプッシュするには、プッシュを実行するパイプライン ステップ内で、コンテナー クライアント (Docker など) を認証する必要があります。

For example, your bitbucket-pipelines.yml file includes a step that authenticates with the static username BITBUCKET_PACKAGES_TOKENas the secret. The following example assumes a Dockerfile exists in the same directory.

pipelines: default: - step: services: - docker script: - docker login crg.apkg.io -u "$BITBUCKET_PACKAGES_USERNAME" -p "$BITBUCKET_PACKAGES_TOKEN" - docker build -t crg.apkg.io/<workspace>/my-container-app:latest . - docker image push crg.apkg.io/<workspace>/my-container-app

You can alternatively use the bbc-packages-push-container-image pipe to push an image from your pipeline step. The pipe handles authentication for you.

pipelines: default: - step: services: - docker script: - docker build -t my-container-app:latest . - pipe: atlassian/bbc-packages-push-container-image:1.0.7 variables: IMAGE_NAME: "my-container-app"

既知の制限事項

  • コンテナー レジストリでは、各レイヤーに 32 GB のサイズ制限があります。

  • コンテナー レジストリには、アップロードに対して 7 分のタイムアウト制限があります。

  • Bitbucket container registry is not 100% compatible with the Open Container Initiative, specifically we don’t support direct DELETE API calls and the tags APIs.

コンテナーイメージとタグを削除

Bitbucket Cloud では、コンテナー イメージ タグを削除することも、関連するすべてのタグを含むコンテナー イメージ全体を削除することもできます。

リポジトリへの書き込み権限を持つユーザーのみがコンテナー イメージ タグを削除できます。

コンテナー イメージ タグを削除する

コンテナー イメージ タグを削除すると、Bitbucket Cloud から完全に削除されます。削除が行われると、そのタグをプルできなくなります。コンテナー イメージ タグを削除するには、次の手順に従います。

  1. ワークスペース、プロジェクト、またはリポジトリにあるパッケージ リスト ビューから、削除するタグを含むイメージを選択します。

  2. イメージ タグのリスト ビューから、[その他のアクション ()] を選択します。

  3. [タグを削除] > [確認] の順に選択します。

コンテナー イメージ タグを削除しても、ストレージはすぐに解放されません。

コンテナー イメージを削除する

リポジトリ管理者権限を持つユーザーのみが、コンテナー イメージを削除できます。

コンテナー イメージを削除すると、そのイメージとそのすべてのタグが Bitbucket Cloud から完全に削除されます。削除が行われると、そのイメージとそのすべてのタグをプルできなくなります。コンテナー イメージを削除するには、次の手順に従います。

  1. ワークスペース、プロジェクト、またはリポジトリにあるパッケージ リスト ビューから、削除するイメージを選択します。

  2. イメージのリスト ビューから、[その他のアクション ()] を選択します。

  3. [イメージを削除] > [確認] の順に選択します。

コンテナー イメージ タグを削除しても、ストレージはすぐに解放されません。

ストレージを解放する

コンテナー イメージとタグの保存方法

コンテナー イメージとタグは、マニフェスト (またはマニフェスト リスト) を指す参照です。マニフェストには、イメージを構成する blob またはレイヤーが一覧表示されます。

Bitbucket コンテナー レジストリは、こうした blob を同じワークスペース内の blob ストアに 1 回格納します。レイヤーが同一であれば、複数のマニフェストまたはイメージが同じ blob を参照できます。

コンテナー イメージまたはタグを削除しても、すぐにスペースが解放されません

通常、イメージまたはタグを削除すると、マニフェスト マッピングへの参照が削除されます。マニフェストと blob は次のような理由でディスクに残ります。

  • 別のタグまたはマニフェストがそれらを参照している可能性があります。

  • レジストリは、競合状態 (同時プッシュなど) を避けるため、タグを削除してもすぐに blob を削除しません。

  • Bitbucket コンテナー レジストリは、別のクリーンアップ手順によって、本当に参照されていない blob を安全に検出します。

タグを削除しても、引き続き blob ファイルは存在します。クリーンアップが実行されるまでストレージ スペースは解放されません。

ガベージ コレクションがストレージを解放する方法

Bitbucket コンテナー レジストリには、ストレージをクリーンアップするためのガベージ コレクション プロセスがあります。これは次のようなケースでトリガーされます。

  • 同じタグがプッシュされている場合

  • コンテナー イメージが削除された場合

  • コンテナー イメージ タグが削除された場合

ガベージ コレクションがトリガーされると、バックグラウンド タスクが開始され、参照されていない blob を特定して削除し、ストレージを解放します。

たとえば、タグ付けされていないコンテナー イメージ マニフェストは、アップロードが中断されている間もシステム内に存在し、最終的にはバックグラウンドで自動的にクリーンアップされます。

さらにヘルプが必要ですか?

アトラシアン コミュニティをご利用ください。