Container Registryを使用すると、コードソースからイメージを構築できます。 Container Registryは、イメージの構築と、Dockerfilesに基づくソースコードリポジトリからContainer Registryリポジトリへのイメージの配信を自動化します。 エラーが発生すると、イメージの作成に失敗する可能性があります。 このトピックでは、イメージ、原因、およびソリューションを構築するプロセスで発生する可能性のある問題について説明します。
ソースコードリポジトリのバインドに失敗する
問題の説明1
コードソースを選択すると、ソースコードリポジトリのアカウントにGitLabへのアクセス許可がないことを示すエラーメッセージが表示されます。
ソリューション: コードソースがContainer Registryにバインドされているかどうかを確認します。
問題の説明2
- ソースコードリポジトリは表示されません。
- プロジェクトグループに属するソースコードリポジトリはサポートされていません。
- 多くのGitLabソースコードリポジトリがドロップダウンリストに表示されますが、作成したものは見つかりません。
- この問題は、リージョン間のネットワーク接続が不安定であるために発生する可能性があります。 フィールドに名前空間とリポジトリ名を入力できます。
- 作成したGitリポジトリのURLが無効です。 GitリポジトリのURLが、namespace/repository.gitなどの2レベルのディレクトリに制限されていることを確認します。
- すべてのパブリックソースコードリポジトリがドロップダウンリストに表示されます。 フィールドに名前空間とリポジトリ名を入力できます。
問題の説明3
イメージリポジトリを作成しますが、[ビルド] ページが見つかりません。
- イメージリポジトリを作成します。
- 指定したアクセストークンを使用してソースコードリポジトリにリクエストを送信し、リポジトリにwebhookを設定します。
- ステップ1で作成されたイメージリポジトリをソースコードリポジトリにバインドします。
- 作成したイメージリポジトリの詳細ページに移動します。 左側のナビゲーションウィンドウで、[ビルド] をクリックします。 [ビルド] ページが表示されます。
- [ビルド] ページが見つからない場合は、次の手順を実行します。
- Container Registryコンソールでページを更新し、イメージリポジトリが作成されているかどうかを確認します。
- Container Registryで指定したアクセストークンに、webhookを設定する権限があることを確認します。
- ソースコードリポジトリの名前空間とリポジトリ名が、GitリポジトリのURLと同じであることを確認してください。
イメージ構築ルールの作成に失敗する
問題の説明
イメージ構築ルールの数が上限に達しました。
ソリューション: さらにルールを作成する必要がある場合は、クォータを増やします。
イメージを自動的にビルドできない
問題の説明
Container Registryがトリガーされて、イメージの構築ルールに一致し、ソースコードプラットフォームから送信されたwebhookリクエストに基づいてイメージを構築すると、イメージの構築に失敗することがあります。
- webhookが誤ってソースコードリポジトリから削除されました。
もう一度webhookを設定する必要があります。
- ソースコードリポジトリの名前空間とリポジトリ名は、GitリポジトリのURLと同じではありません。 ユーザー名とリポジトリ名を変更する可能性があります。
変更したユーザー名とリポジトリ名をロールバックする必要があります。
遅い画像の構築
問題の説明
リージョン間のネットワーク接続が不安定なため、コードのプル、イメージのプル、リソースのダウンロードにより、イメージの構築が遅くなります。
ソリューション
- Container Registry Enterprise Editionインスタンスを使用する場合は、必要に応じて次の手順を実行します。
- [インテリジェントに海外ソースをビルド] 機能を有効にできます。
- 中国本土のデータセンターからイメージを取得する速度が、[Intelligently Build Overseas Sources] 機能の影響を受ける場合は、中国本土のデータセンターからイメージを直接取得できます。
- 前述の2つの機能を組み合わせて、さまざまなソースからのイメージ構築を高速化します。
- Container Registry Personal Editionインスタンスを使用する場合は、必要に応じて次の手順を実行します。
- 中国本土以外に配置されたサーバーを使用したビルド機能を有効にできます。
- キャッシュなしビルド機能を無効にできます。
ソースコードのプルに失敗
問題の説明1
ソースコードリポジトリが存在しないか、ソースコードリポジトリにアクセスする権限がありません。
ソリューション
- 変更されたユーザー名をロールバックします。
- Alibaba Cloud Codeアカウントを再バインドします。
問題の説明2
ソースコードがタイムアウトします。
ソリューション
この問題は、リージョン間のネットワーク接続が不安定であることが原因です。 インテリジェントに海外ソースをビルドする機能を使用して、コードのプルを高速化できます。 詳細については、「遅いイメージ構築」をご参照ください。
画像のプルに失敗する
問題の説明1
中国国外のデータセンターから画像を取得できません。
ソリューション
- 中国以外のクラウドサービスプロバイダーからContainer Registryに画像をアップロードすることを推奨します。 次に、Container Registryで画像を直接使用できます。
- [インテリジェントに海外ソースをビルド] 機能を有効にできます。
問題の説明2
インスタンスの仮想プライベートクラウド (VPC) エンドポイントを使用して、Container Registry Personal Editionインスタンスからイメージをプルできません。
ソリューション
Container Registry Personal Editionインスタンスからイメージを構築する場合は、インスタンスのパブリックエンドポイントを使用します。
問題の説明3
インスタンスのパブリックエンドポイントを使用して、Container Registry Enterprise Editionインスタンスからイメージをプルできません。
ソリューション
Container Registry Enterprise Editionインスタンスからイメージを構築する場合は、インスタンスのVPCエンドポイントを使用します。
画像をプッシュできない
問題の説明
ネットワークの状態により、画像がプッシュされない場合があります。
ソリューション
中国本土以外に配置されたサーバーを使用したビルド機能を有効にするとします。 Container Registry Personal Editionインスタンスで作成されたイメージは、リージョン間のネットワーク接続が不安定であるため、中国本土のリージョンにプッシュできない場合があります。 再試行するか、中国本土以外に配置されたサーバーを使用したビルド機能を無効にします。
イメージ構築タスクの保留中の状態
問題の説明
Container Registry Personal EditionとContainer Registry Enterprise Editionの両方のImage Builder機能では、1人のユーザーの同時タスク数に制限があります。
ソリューション
過剰なイメージ構築タスクが原因で問題が発生した場合は、次の方法を使用します。
- Container Registry Personal Editionインスタンスを使用する場合は、インスタンスをContainer Registry Enterprise Editionにアップグレードします。
- Container Registry Enterprise Editionインスタンスを使用する場合は、イメージ構築タスクのクォータを増やして申請します。
画像を構築する過程での失敗
構築プロセスで発生するエラーの原因は複雑です。 リソースのプルがタイムアウトした場合、次の方法を使用して問題を解決できます。
画像のプルを加速します。 詳細については、「遅いイメージ構築」をご参照ください。