パッケージの使用を開始する
Bitbucket パッケージにアクセスするための前提条件
ワークスペースが Atlassian 組織にリンクされている必要があります。ワークスペースを Atlassian 組織にリンクする詳細な方法については、サポート ドキュメントをご確認ください。
Standard プランまたは Premium プランのいずれかが必要です。この機能は Standard プランおよび Premium プランでのみ利用でき、プランに応じて特定の制限があります。Bitbucket プランをご確認ください。
パッケージは、月額プランのお客様のみが作成および使用できます。
Bitbucket コンテナーのレジストリは以下を提供します。
Bitbucket Cloud に直接統合されているコンテナー イメージ用のワークスペースレベルの名前空間。
リポジトリ権限を既定で継承する、リポジトリにリンクされたイメージ。
ソース コード、パイプライン、アーティファクトを 1 か所にまとめることができる、統合された開発者エクスペリエンス。
アトラシアン API トークンを作成する
パッケージを認証するには、特定のスコープが設定されているアトラシアン API トークンが必要です。
API トークンを作成するには、https://id.atlassian.com/manage-profile/security/api-tokens にアクセスして
Create API token with scopes
を選択します。トークンの名前と有効期限を入力します。
必要なスコープ
read:package:bitbucket
を選択します。トークンを使用してレジストリにイメージをプッシュできるようにする場合は、
write:package:bitbucket
スコープを選択することもできます。
API トークンの作成と設定の詳細については、サポート ドキュメントをご確認ください。
コンテナー レジストリを使用する
コンテナー レジストリは、個々のリポジトリにリンクされたイメージを持つワークスペース内で動作します。イメージの権限は、以下で説明しているように、リポジトリ ロール (管理者、書き込み、読み取り) と一致しています。
リポジトリ権限 | 説明 |
---|---|
管理 | 新しいパッケージを作成してリポジトリにリンクし、パッケージがリポジトリの権限を継承できるようにします。 |
書き込み | コンテナー イメージを Bitbucket パッケージ レジストリにプッシュします。 |
読み取り | Bitbucket パッケージ レジストリにプッシュされたコンテナー イメージをプルします。 |
パッケージを作成する
レジストリに対してコンテナー イメージをプッシュ/プルする前に、まず Bitbucket のコンテナー イメージを表すパッケージを作成する必要があります。
上部のナビゲーション バーで [作成] を選択し、[作成] ドロップダウン メニューを開きます。
[作成] ドロップダウンから [パッケージ] を選択します。
パッケージの名前を [パッケージ名] フィールドに入力します。
[Repository to link to (リンクするリポジトリ)] ドロップダウンを選択し、パッケージをリンクするリポジトリを選択します。注意: パッケージはリポジトリの権限を継承し、ユーザーにはパッケージにアクセスするための同じ権限が付与されます。
[送信] を選択し、パッケージを作成します。
認証
コンテナー レジストリへのプッシュとコンテナー レジストリからのプルを行うには、アトラシアン API トークンでクライアントを認証する必要があります。Docker CLI を使用している場合は、既定のコンテンツをユーザー名とアトラシアンのメール アドレスに置き換える次のコマンドを使って、認証情報を構成します。
docker login --username <your_atlassian_account_email_address> crg.apkg.io
パスワードの入力を求められたら、API トークンを入力します。認証されると、お使いのマシンに認証情報が保存され、以降のすべてのコンテナー レジストリ操作に使用されます。
コンテナー イメージをレジストリにプッシュする
コンテナー イメージをプッシュするには、イメージ参照にコンテナー レジストリのホスト名 (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
コマンドが完了してからイメージがページに表示されるまでに、多少の遅延が生じる場合があります。
ワークスペース内のイメージを表示するには、上部のナビゲーション バーで [パッケージ] を選択します。これにより、ワークスペース内のすべてのイメージをリストした [パッケージ] ページが表示されます。
プロジェクト内のイメージを表示するには、イメージのリストを表示したいプロジェクト内の左側のサイドバーで [パッケージ] を選択します。
リポジトリ内のイメージを表示するには、イメージのリストを表示したいリポジトリ内の左側のサイドバーで [パッケージ] を選択します。
イメージの詳細を表示する
イメージを表示する: パッケージのリストからイメージ名を選択すると、そのイメージの詳細が表示されます。
タグを表示する: タグ名を選択すると、そのイメージに関連付けられているタグに固有の詳細が表示されます。
Pipelines でコンテナー レジストリを使用する
Bitbucket Pipelines からイメージをプッシュするには、プッシュを実行するパイプライン ステップ内で、コンテナー クライアント (Docker など) を認証する必要があります。
たとえば、次のステップは変数 ATLASSIAN_EMAIL
と API_TOKEN
を使用して認証します (機密性が高いため、API_TOKEN
は保護された変数でなければなりません)。
- step:
name: Build and push Docker image
services:
- docker
script:
- export IMAGE_NAME="crg.apkg.io/my-workspace/my-image"
- echo $API_TOKEN | docker login crg.apkg.io --user $ATLASSIAN_EMAIL --password-stdin
- docker build --tag "$IMAGE_NAME:latest" .
- docker image push "$IMAGE_NAME:latest"
既知の制限事項
コンテナー イメージとタグは削除できません。また、ストレージを解放するためにイメージによって使用される、ストレージのガベージ コレクションもありません。
Bitbucket コンテナー レジストリは、オープン コンテナー イニシアチブと 100% の互換性があるわけではありません。具体的には、直接的な
DELETE
API 呼び出しとタグ API はサポートされていません。
この内容はお役に立ちましたか?