Container Registry Enterprise Edition は、ソースコードからコンテナイメージへの安全かつ効率的な自動継続的インテグレーションプロセスを提供します。Container Registry Enterprise Edition はまた、Dockerfile ルールに基づいてイメージを自動的にビルドし、イメージリポジトリにコミットする機能も提供します。このトピックでは、Container Registry Enterprise Edition インスタンスを使用してコンテナイメージをビルドする方法について説明します。
前提条件
Container Registry Enterprise Edition インスタンスが作成されていること。詳細については、「Container Registry Enterprise Edition インスタンスにイメージをプッシュし、インスタンスからイメージをプルする」トピックの「ステップ 1: Container Registry Enterprise Edition インスタンスを作成する」セクションをご参照ください。
イメージのビルドに使用する Dockerfile が作成されていること。
背景情報
Container Registry のイメージビルドサービスは、セキュリティ、安定性、インテリジェントなアクセラレーションを特長としています。
セキュリティ: セキュリティを確保するために、システムは各イメージビルドタスクを Alibaba Cloud アカウント専用の環境に配布します。
安定性: ソースコードリポジトリを使用して複数のイメージをビルドする場合、イメージビルドタスクは Alibaba Cloud アカウント専用の環境で実行されるため、各イメージビルドタスクに使用される時間は安定しています。
インテリジェントなアクセラレーション:
デフォルトでは、システムは効率的なビルドツール BuildKit を使用します。BuildKit は、特にマルチステージビルドシナリオにおいて堅牢なビルド機能を備えており、豊富なビルド機能をサポートしています。
システムは一般的なベースイメージをホストします。イメージビルド中に、システムはイメージをプルすることなくベースイメージを使用できます。ベースイメージは、ビルド期間の短縮に役立ちます。
システムはリモートキャッシュを使用してイメージビルドを高速化できます。
Container Registry は、複数のコードホスティングプラットフォームと高速イメージ生成をサポートしています。
コードホスティングプラットフォーム: 次の表に、サポートされているコードホスティングプラットフォームを示します。
コードプラットフォーム
コードプラットフォームバージョン
バインディング方法
ビルドトリガー制限
Gitee
Personal Edition インスタンスの構成はサポートされていません。
すべて
Gitee OAuth 認証
なし
GitHub
GitHub Personal のみがサポートされています
GitHub OAuth 認証
なし
GitLab
すべて
パーソナルアクセストークン
なし
Bitbucket
すべて
Gitee OAuth 認証
なし
高速イメージ生成: システムでは、コンテナイメージのリソースをオンデマンドでロードできます。コンテナイメージの高速化バージョンは、コンテナイメージがプッシュされた後に自動的に生成されます。詳細については、「コンテナイメージのリソースをオンデマンドでロードする」をご参照ください。
ステップ 1: インスタンスをソースコードホスティングプラットフォームにバインドする
イメージをビルドする前に、インスタンスをソースコードホスティングプラットフォームにバインドする必要があります。詳細については、「ソースコードホスティングプラットフォームをバインドする」をご参照ください。
オンプレミスのコードリポジトリからイメージをビルドすることはできません。
VPC 内の非公開 GitLab コードリポジトリをバインドする方法については、「VPC でコンテナイメージをビルドする」をご参照ください。
ステップ 2: 名前空間を作成する
Container Registry コンソール にログインします。
上部のナビゲーションバーで、リージョンを選択します。
左側のナビゲーションウィンドウで、[インスタンス] をクリックします。
[インスタンス] ページで、名前空間を作成する Container Registry Enterprise Edition インスタンスをクリックします。
Enterprise Edition インスタンスの管理ページの左側のナビゲーションウィンドウで、 を選択します。
[名前空間] ページで、[名前空間の作成] をクリックします。
[名前空間の作成] サイドバーで、[名前空間] と [リポジトリの自動作成] を構成します。次に、[確認] をクリックします。
ステップ 3: イメージリポジトリを作成する
高速イメージは、Container Registry Standard Edition インスタンスと Advanced Edition インスタンスでのみビルドできます。Basic Edition インスタンスを Standard Editon インスタンスまたは Advanced Edition インスタンスにスペックアップすることをお勧めします。
イメージリポジトリを作成し、コードリポジトリにバインドします。コードリポジトリから生成されたすべてのイメージは、イメージリポジトリにプッシュされます。
Container Registry コンソール にログインします。
上部のナビゲーションバーで、リージョンを選択します。
左側のナビゲーションウィンドウで、[インスタンス] をクリックします。
[インスタンス] ページで、管理する Enterprise Edition インスタンスをクリックします。
Enterprise Edition インスタンスの管理ページの左側のナビゲーションウィンドウで、 を選択します。
- [リポジトリ] ページで、[リポジトリの作成] をクリックします。
[リポジトリ情報] ステップで、[名前空間]、[リポジトリ名]、[リポジトリタイプ]、[タグ]、[高速イメージ]、[概要]、[説明] パラメータを構成します。次に、[次へ] をクリックします。
[コードソース] ステップで、[コードソース]、[ビルド設定]、[ビルドルール] を構成し、[リポジトリの作成] をクリックします。
パラメータ
説明
コードソース
コードソース。
ビルド設定
コード変更時にイメージを自動的にビルドする: ブランチからコードがコミットされると、ビルドルールが自動的にトリガーされます。
中国本土以外にデプロイされたサーバーでビルドする: ビルドプロセス中に、ビルドは海外のデータセンターで実行され、完了すると指定されたリージョンにプッシュされます。プロジェクトの Dockerfile が外国のサイトからファイルをダウンロードする必要があるが、国境を越えたネットワーク接続が不安定な場合は、[中国本土以外にデプロイされたサーバーでビルドする] を有効にできます。
キャッシュなしでビルドする: イメージがビルドされるたびに、システムはソースコードリポジトリからベースイメージをプルします。これにより、ビルドプロセスが遅くなる可能性があります。イメージビルドを高速化するために、[キャッシュなしでビルドする] を無効にすることができます。
[リポジトリ] ページで、作成したイメージリポジトリをクリックします。リポジトリ管理ページの左側のナビゲーションウィンドウに [ビルド] が表示されている場合、イメージリポジトリはソースコードリポジトリにバインドされています。
ステップ 4: イメージをビルドする
リポジトリ管理ページで [ビルド] が見つからない場合、Enterprise Edition インスタンスはコードソースホスティングプラットフォームにバインドされていません。ステップ 1 を参照して、インスタンスをソースコードホスティングプラットフォームに再バインドできます。
Container Registry コンソール にログインします。
上部のナビゲーションバーで、リージョンを選択します。
左側のナビゲーションウィンドウで、[インスタンス] をクリックします。
[インスタンス] ページで、管理する Enterprise Edition インスタンスをクリックします。
Container Registry Enterprise Edition インスタンスの管理ページの左側のナビゲーションウィンドウで、 を選択します。
[リポジトリ] ページで、作成したイメージリポジトリを見つけ、[アクション] 列の [管理] をクリックします。
左側のナビゲーションウィンドウで、[ビルド] をクリックします。[ビルドルール] セクションで、[ビルドルールの追加] をクリックします。「ビルドルールの追加」ウィザードの [ビルド情報] ステップで、パラメータを構成し、[次へ] をクリックします。次の表にパラメータを示します。
パラメータ
説明
[タイプ]
ソースコードリポジトリのタイプを指定します。有効な値: ブランチとタグ。
[ブランチ/タグ]
ブランチまたはタグを選択または入力します。正規表現がサポートされています。release-(?<imageTag>\w*) 正規表現を指定すると、release-v1 ブランチのソースコードが更新されたときに、システムは自動的に V1 のイメージをビルドします。イメージを手動でビルドすることはできません。正規表現の指定方法の詳細については、「名前付きキャプチャグループで正規表現を使用する」をご参照ください。
説明正規表現を指定した後、イメージはシステムによってのみビルドできます。イメージを手動でビルドすることはできません。
[ビルドコンテキストディレクトリ]
Dockerfile が存在するディレクトリを指定します。これは、ブランチまたはタグディレクトリのサブディレクトリです。たとえば、ブランチディレクトリが master/ で、Dockerfile が master/ ディレクトリにある場合、値は master/Dockerfile です。
[Dockerfile ファイル名]
Dockerfile の名前を指定します。デフォルト名は Dockerfile です。
[タグ] ステップで、パラメータを構成し、[保存] をクリックしてから、[次へ] をクリックします。
説明[構成の追加] をクリックして、イメージタグを追加します。最大 3 つのイメージタグを追加できます。
パラメータ
説明
[イメージタグ]
イメージのタグ。例: latest。名前付きキャプチャグループを有効にすることができます。たとえば、[ブランチ/タグ] に名前付きキャプチャグループを指定した場合、キャプチャされたコンテンツを使用できます。
[ビルド時間]
ソースコードがプッシュされた時間 (UTC + 08:00)。例: 20201015 または 202010151613。
説明このパラメータはオプションです。このパラメータを設定すると、システムのみがイメージをビルドできます。イメージを手動でビルドすることはできません。
[コミット ID]
最後にプッシュされたコードのコミット ID から取得する文字数。デフォルトでは、最初の 6 文字が使用されます。スライダーを調整して文字数を変更できます。
説明このパラメータはオプションです。このパラメータを設定すると、システムのみがイメージをビルドできます。イメージを手動でビルドすることはできません。
[ビルド構成] ステップで、パラメータを構成し、[確認] をクリックします。次の表にパラメータを示します。
パラメータ
説明
[ビルドアーキテクチャ]
イメージをビルドするアーキテクチャ。複数のアーキテクチャを選択できます。複数のアーキテクチャを選択すると、各イメージタグに対してアーキテクチャ用の複数のコンテナイメージがビルドされます。
[ビルドパラメータ]
イメージビルドのランタイムパラメータ。各ビルドパラメータは、大文字と小文字を区別するキーと値のペアです。最大 20 個のビルドパラメータを構成できます。Dockerfile 内の環境変数を変更し、同じ Dockerfile を異なるステータスで表示するために、ビルドパラメータを設定できます。
イメージビルドルールをトリガーします。
次のいずれかの方法を使用して、イメージビルドルールをトリガーできます。
[ビルド] ページの [ビルドルール] セクションで、イメージビルドルールを見つけ、[アクション] 列の [ビルド] をクリックします。
ビルドルールをトリガーするために、ソースコードリポジトリの master ブランチにコードを送信します。
説明[ビルド] ページの [ビルドログ] セクションで、トリガーされたイメージビルドタスクを見つけ、[アクション] 列の [キャンセル] をクリックして、イメージビルドタスクをキャンセルします。
[ビルド] ページの [ビルドログ] セクションで、トリガーされたイメージビルドタスクを見つけ、[アクション] 列の [ログ] をクリックして、イメージビルドログを表示します。
左側のナビゲーションウィンドウで、[イメージタグ] をクリックします。作成したイメージが表示されている場合、イメージはビルドされています。
例 1: main という名前のブランチに基づいてイメージをビルドする (イメージを手動でビルドできます)
次の設定に基づいてビルドルールを構成します。
[タイプ]: ブランチ
[ブランチ/タグ]: main
[ビルドコンテキストディレクトリ]: /
[Dockerfile ファイル名]: Dockerfile
[イメージタグ]: latest
[ビルド] をクリックするか、main ブランチのソースコードが更新されると、システムはイメージをビルドします。main ブランチの / ディレクトリにある Dockerfile という名前のファイルを使用して、イメージがビルドされます。作成されたイメージのタグは latest です。次の図は、ビルドルールの構成を示しています。

例 2: 正規表現に一致するブランチに基づいてイメージをビルドする (イメージを手動でビルドできません)
次の設定に基づいてビルドルールを構成します。
[タイプ]: ブランチ
[ブランチ/タグ]: release-(?<imageTag>\w*)
[ビルドコンテキストディレクトリ]: /
[Dockerfile ファイル名]: Dockerfile
[イメージタグ]: ${imageTag}
[ビルド時間]: yyyyMMddHHmm
[コミット ID]: 30
名前が release- で始まるブランチでソースコードが更新されると、システムは自動的にイメージをビルドします。ブランチの / ディレクトリにある Dockerfile という名前のファイルを使用して、イメージがビルドされます。
たとえば、名前が release-v1 で始まるブランチのソースコードが更新されると、release-(?<imageTag>\w*) の正規ルールは、ブランチ名で v1 をキャプチャし、v1 を imageTag 変数に送信し、イメージタグで v1 を使用します。この例では、作成されたイメージのタグは v1-202010151625-d4ef3dc3b77a011a5779eec7efdd45 です。次の図は、ビルドルールの構成を示しています。

次のステップ
イメージがビルドされた後、次の操作を実行できます。
シークレットを使用せずに Container Service for Kubernetes (ACK) クラスタからイメージをプルできます。詳細については、「aliyun-acr-credential-helper コンポーネントを使用して、シークレットを使用せずにイメージをプルする」をご参照ください。
イメージを使用して ACK クラスタにアプリケーションを作成できます。詳細については、「デプロイメントを使用してステートレスアプリケーションを作成する」をご参照ください。
ACK クラスタの P2P アクセラレーション機能を使用して、イメージのプルを高速化できます。詳細については、「サーバーレス Kubernetes と ACK クラスタで P2P アクセラレーション機能を使用する」をご参照ください。