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のイメージ構築サービスは、セキュリティ、安定性、インテリジェントなアクセラレーションを備えています。
セキュリティ: 画像構築中、システムは各画像構築タスクを新しい排他的な隔離された環境に分散します。 これにより、コードと画像アセットのセキュリティが確保されます。
安定性: ソースコードリポジトリを使用して複数のイメージを構築する場合、各イメージ構築タスクは排他的な環境で実行されるため、各イメージ構築タスクに使用される時間は安定しています。
インテリジェント加速:
デフォルトでは、システムは効率的な構築ツールBuildKitを使用します。 BuildKitには、特に多段階の建物シナリオ向けの堅牢な建物機能があり、豊富な建物機能をサポートしています。
システムは共通ベースイメージをホストします。 画像構築中、システムは、画像をプルする必要なしにベース画像を使用することができる。 ベース画像は、構築期間を短縮するのに役立つ。
システムは、リモートキャッシュを使用して画像構築を加速できます。
Container Registryは、複数のコードホスティングプラットフォームと高速化されたイメージ生成をサポートします。
コードホスティングプラットフォーム: 次の表に、サポートされているコードホスティングプラットフォームを示します。
コードホスティングプラットフォーム
バージョンのコードホストプラットフォーム
バインドの認証方法
トリガー画像構築の制限
ギテ
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) クラスターからイメージをプルできます。 詳細については、「」をご参照ください。
イメージを使用して、ACKクラスターでアプリケーションを作成できます。 詳細については、「デプロイを使用したステートレスアプリケーションの作成」をご参照ください。
ACKクラスターでP2Pアクセラレーション機能を使用して、イメージプルを高速化できます。 詳細については、「ACKサーバーレスおよびACKクラスターでのP2Pアクセラレーション機能の使用」をご参照ください。