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
All
Gitee OAuth认证
なし
GitHub
GitHub開発者バージョン
GitHub OAuth认证
なし
GitLab
All
個人用アクセストークン
なし
Bitbucket
All
Gitee OAuth认证
なし
高速化されたイメージ生成: システムでは、コンテナイメージのリソースをオンデマンドでロードできます。 加速バージョンのコンテナイメージは、コンテナイメージがプッシュされた後に自動的に生成されます。 詳細については、「コンテナーイメージのリソースをオンデマンドで読み込む」をご参照ください。
ステップ1: インスタンスをソースコードホスティングプラットフォームにバインドする
イメージを作成する前に、インスタンスをソースコードホスティングプラットフォームにバインドする必要があります。 詳細については、「ソースコードホスティングプラットフォームのバインド」をご参照ください。
オンプレミスのコードリポジトリからイメージをビルドすることはできません。
仮想プライベートクラウド (VPC) でプライベートGitLabコードリポジトリをバインドする方法の詳細については、「VPCでのコンテナイメージの構築」をご参照ください。
ステップ2: 名前空間を作成する
Container Registryコンソールにログインします。
上部のナビゲーションバーで、リージョンを選択します。
左側のナビゲーションウィンドウで、[インスタンス] をクリックします。
インスタンスページで、名前空間を作成するContainer Registry Enterprise Editionインスタンスをクリックします。
Enterprise Editionインスタンスの管理ページの左側のナビゲーションウィンドウで、 .
名前空間ページをクリックします。名前空間の作成.
[名前空間の作成] ダイアログボックスで、名前空間、[リポジトリの自動作成] 、および [デフォルトのリポジトリタイプ] を設定します。 次に、[確認] をクリックします。
ステップ3: イメージリポジトリを作成する
高速化イメージは、Container Registry Advanced Editionインスタンスでのみビルドできます。 Basic EditionインスタンスをAdvanced Editionインスタンスにアップグレードすることを推奨します。
イメージリポジトリを作成し、コードリポジトリにバインドします。 コードリポジトリから生成されたすべてのイメージは、イメージリポジトリにプッシュされます。
Container Registryコンソールにログインします。
上部のナビゲーションバーで、リージョンを選択します。
左側のナビゲーションウィンドウで、[インスタンス] をクリックします。
[インスタンス] ページで、管理するEnterprise Editionインスタンスをクリックします。
Enterprise Editionインスタンスの管理ページの左側のナビゲーションウィンドウで、 .
リポジトリページをクリックします。リポジトリの作成.
[リポジトリ情報] ステップで、[名前空間] 、[リポジトリ名] 、[リポジトリの種類] 、[タグ] 、[高速化イメージ] 、[概要] 、および [説明] パラメーターを設定します。 次に、[次へ] をクリックします。
コードソースステップ、構成コードソース,ビルド設定、およびビルドルールをクリックし、リポジトリの作成.
パラメーター
説明
コードソース
コードソース。
ビルド設定
コードが変更されたときにイメージを自動的にビルドする: コードがブランチからコミットされると、ビルドルールが自動的にトリガーされます。
中国本土外に配置されたサーバーを使用したビルド: イメージは中国本土外のサーバー上にビルドされ、指定されたリージョンのリポジトリにプッシュされます。 プロジェクトで使用されるDockerfileを中国本土以外のサイトからダウンロードする必要があるが、国境を越えたネットワーク接続が不安定な場合は、中国本土以外に配置されたサーバーでビルドを有効にできます。
キャッシュなしのビルド: イメージがビルドされるたびに、システムはソースコードリポジトリからベースイメージをプルします。 これにより、構築プロセスが遅くなる可能性があります。 [キャッシュなしのビルド] を無効にすると、イメージの構築を高速化できます。
[リポジトリ] ページで、作成したイメージリポジトリをクリックします。 リポジトリ管理ページの左側のナビゲーションウィンドウに [ビルド] が表示されている場合、イメージリポジトリはソースコードリポジトリにバインドされます。
ステップ4: イメージを作成する
リポジトリ管理ページで [ビルド] が見つからない場合、Enterprise Editionインスタンスをコードソースホスティングプラットフォームにバインドできません。 インスタンスをソースコードホスティングプラットフォームに再バインドするには、手順1を参照してください。
Container Registryコンソールにログインします。
上部のナビゲーションバーで、リージョンを選択します。
左側のナビゲーションウィンドウで、[インスタンス] をクリックします。
[インスタンス] ページで、管理するEnterprise Editionインスタンスをクリックします。
Container Registry Enterprise Editionインスタンスの管理ページの左側のナビゲーションウィンドウで、 .
リポジトリページ、作成したイメージリポジトリを見つけ、管理で、アクション列を作成します。
左側のナビゲーションウィンドウで、[ビルド] をクリックします。 [ビルドルール] セクションで、[ビルドルールの追加] をクリックします。 [ビルドルールの追加] ウィザードの [ビルド情報] ステップで、パラメーターを設定し、[次へ] をクリックします。 下表にパラメーターを示します。
パラメーター
説明
データ型
ソースコードリポジトリのタイプを指定します。 有効な値: BranchとTag。
ブランチ /タグ
ブランチまたはタグを選択または入力します。 正規表現に対応しています。 release-(?<imageTag>\w *) 正規表現を指定すると、release-v1ブランチのソースコードが更新されると、システムは自動的にV1のイメージを構築します。 イメージを手動でビルドすることはできません。 正規表現を指定する方法の詳細については、「名前付きキャプチャグループでの正規表現の使用」をご参照ください。
説明正規表現を指定すると、イメージはシステムによってのみ作成できます。 イメージを手動で作成することはできません。
ビルドコンテキストディレクトリ
Dockerfileが存在するディレクトリを指定します。 ブランチまたはタグディレクトリのサブディレクトリです。 たとえば、ブランチディレクトリがmaster /で、Dockerfileがmaster /ディレクトリにある場合、値はmaster/Dockerfileです。
Dockerfileファイル名
Dockerfileの名前を指定します。 デフォルトの名前はDockerfileです。
タグステップ、パラメータを設定し、保存をクリックし、次へ.
説明[設定の追加] をクリックして画像タグを追加します。 最大3つの画像タグを追加できます。
パラメーター
説明
画像タグ
画像のタグ。 例: latest。 名前付きキャプチャグループを有効にできます。 たとえば、Branch/Tagに名前付きキャプチャグループを指定した場合、キャプチャされたコンテンツを使用できます。
ビルド時間
ソースコードがプッシュされた時刻 (UTC + 8) 。 例: 20201015または202010151613。
説明このパラメーターはオプションです。 このパラメーターを設定すると、システムのみがイメージを作成できます。 イメージを手動で作成することはできません。
コミットID
最後にプッシュされたコードのコミットIDから取得する文字数。 デフォルトでは、最初の6文字が使用されます。 スライダーを調整して文字数を変更できます。
説明このパラメーターはオプションです。 このパラメーターを設定すると、システムのみがイメージを作成できます。 イメージを手動で作成することはできません。
[ビルド設定] ステップで、パラメーターを設定し、[確認] をクリックします。 下表にパラメーターを示します。
パラメーター
説明
ビルドアーキテクチャ
イメージを作成するアーキテクチャ。 複数のアーキテクチャを選択できます。 複数のアーキテクチャを選択した場合、アーキテクチャの複数のコンテナイメージがイメージタグごとに作成されます。
ビルドパラメーター
イメージ構築の実行時パラメーター。 各建物パラメータは、大文字と小文字が区別されるキーと値のペアです。 最大20の建物パラメータを設定できます。 構築パラメーターを設定して、Dockerfileの環境変数を変更し、同じDockerfileに異なるステータスを表示させることができます。
イメージ構築ルールをトリガーします。
次のいずれかの方法を使用して、イメージ構築ルールをトリガーできます。
[ビルド] ページの [ビルドルール] セクションで、イメージビルディングルールを見つけ、[操作] 列の [ビルド] をクリックします。
構築ルールをトリガーするには、ソースコードリポジトリのマスターブランチにコードを送信します。
説明[ビルド] ページの [ビルドログ] セクションで、トリガーされたイメージ構築タスクを見つけ、[操作] 列の [キャンセル] をクリックして、イメージ構築タスクをキャンセルします。
[ビルド] ページの [ビルドログ] セクションで、トリガーされたイメージ構築タスクを見つけ、[操作] 列の [ログ] をクリックして、イメージ構築ログを表示します。
左側のナビゲーションウィンドウで、[画像タグ] をクリックします。 作成したイメージが表示されると、イメージがビルドされます。
例1: mainという名前のブランチに基づいてイメージをビルドします (手動でイメージをビルドできます) 。
次の設定に基づいて構築ルールを設定します。
タイプ: ブランチ
ブランチ /タグ: main
ビルドコンテキストディレクトリ: /
Dockerfileファイル名: Dockerfile
画像タグ: 最新
[ビルド] をクリックするか、メインブランチのソースコードが更新されると、システムはイメージをビルドします。 メインブランチの /ディレクトリにあるDockerfileという名前のファイルを使用して、イメージをビルドします。 作成した画像のタグが最新です。 次の図は、構築ルールの構成を示しています。
例2: 正規表現に一致するブランチに基づいてイメージを構築する (手動でイメージを構築することはできません)
次の設定に基づいて構築ルールを設定します。
タイプ: ブランチ
ブランチ /タグ: release-(?<imageTag>\w *)
ビルドコンテキストディレクトリ: /
Dockerfileファイル名: Dockerfile
画像タグ: ${imageTag}
ビルド時間: yyyyMMddHHmm
コミットID: 30
名前がrelease-
で始まるブランチでソースコードが更新されると、システムは自動的にイメージを構築します。 ブランチの /ディレクトリにあるDockerfileという名前のファイルを使用して、イメージをビルドします。
たとえば、名前がrelease-v1
で始まるブランチのソースコードが更新された場合、release-(?<imageTag>\w *)
の正規ルールはブランチ名でv1
をキャプチャし、v1をimageTag
変数に送信し、imageタグでv1を使用します。 この例では、作成された画像のタグはv1-202010151625-d4ef3dc3b77a011a5779eec7efdd45
です。 次の図は、構築ルールの構成を示しています。
次のステップ
イメージの作成後、次の操作を実行できます。
シークレットを使用せずに、Container Service for Kubernetes (ACK) クラスターからイメージをプルできます。 詳細については、「aliyun-acr-credential-helperコンポーネントを使用して、シークレットを使用せずにイメージをプルする」をご参照ください。
イメージを使用して、ACKクラスターでアプリケーションを作成できます。 詳細については、「デプロイを使用したステートレスアプリケーションの作成」をご参照ください。
ACKクラスターでP2Pアクセラレーション機能を使用して、イメージプルを高速化できます。 詳細については、「ACKサーバーレスおよびACKクラスターでのP2Pアクセラレーション機能の使用」をご参照ください。