すべてのプロダクト
Search
ドキュメントセンター

Container Registry:コンテナーイメージのリソースをオンデマンドでロードする

最終更新日:Mar 06, 2025

通常、イメージを使用してコンテナーを作成する場合、コンテナーの起動に必要なリソースが一部のみであっても、システムはイメージパッケージ全体をダウンロードして解凍します。 これには通常、長い時間がかかります。 Container Registry Enterprise Edition を使用すると、コンテナーイメージの高速化バージョンをデプロイできます。 高速化されたイメージでは、イメージパッケージ全体をダウンロードする必要がなく、必要なリソースのみをダウンロードして解凍できます。 これにより、アプリケーションのデプロイが高速化され、高い弾力性が得られます。

前提条件

  • クラスターは、次のクラスタータイプのいずれかである必要があります。

    説明

    Container Service for Kubernetes (ACK) マネージドクラスターまたは ACK 専用クラスター V1.16.9 以降、ACK Edge クラスターACK Serverless Kubernetes クラスター、またはACK Lingjun クラスター V1.26.3 以降、または Alibaba Cloud Container Compute Service (ACS) クラスター。 クラスターは、Alibaba Cloud Linux 2.1903、Alibaba Cloud Linux 3.2104、Alibaba Cloud Linux 3.2104 LTS 64 ビット Arm Edition、Alibaba Cloud Linux UEFI 2.1903、および CentOS 7.9 のいずれかのオペレーティングシステムを使用している必要があります。

  • Container Registry Enterprise Edition インスタンスが作成されます。 詳細については、「Container Registry Enterprise Edition インスタンスを作成する」をご参照ください。

    重要

    高速化イメージをサポートする Container Registry Enterprise Edition インスタンスのエディションは、イメージの高速化モードによって異なります。

    • フルモード: Standard Edition および Advanced Edition

    • インデックスのみモード: Basic Edition、Standard Edition、および Advanced Edition

  • ACK クラスターまたはACK Serverless Kubernetes クラスターの VPC が、Container Registry Enterprise Edition インスタンスのアクセス制御リスト (ACL) に追加されます。 高速化イメージは VPC でのみ実行できます。 詳細については、「VPC ACL を構成する」をご参照ください。

背景情報

Container Registry Enterprise Edition を使用すると、コンテナーイメージの高速化バージョンをデプロイできます。 高速化されたイメージを使用すると、必要なリソースのみをダウンロードし、イメージパッケージをオンラインで解凍できます。 これにより、アプリケーションアーティファクトの配布が高速化され、高い弾力性が得られます。 高速化の効果は、イメージサイズとイメージリポジトリのネットワーク条件によって異なります。 テストでは、1.34 GB サイズのNodeBB イメージを Docker Hub からプルするには 36 秒かかります。 イメージでアプリケーションを起動するには 38 秒かかります。 高速化された NodeBB イメージのプルには 4 秒しかかからず、イメージでのアプリケーションの起動には 9 秒しかかかりません。

使用制限

  • コンテナーランタイムが Containerd の場合、高速化イメージのリポジトリにカスタムドメイン名を設定できます。 コンテナーランタイムが Docker の場合、Docker の制限により、高速化イメージのリポジトリにカスタムドメイン名を設定することはできません。 詳細については、「カスタムドメイン名を使用して Container Registry Enterprise Edition インスタンスにアクセスする」をご参照ください。

  • インデックスのみモードは、Function Compute または Serverless App Engine (SAE) シナリオでは使用できません。

リージョン制限

オンデマンドイメージ読み込み機能は、Alibaba Finance Cloud および Alibaba Gov Cloud のリージョンではサポートされていません。

ベースイメージを高速化イメージに変換する

リポジトリのイメージの高速化を有効にできます。 これにより、リポジトリにプッシュされる各イメージは、自動的に高速化イメージに変換されます。 イメージを高速化イメージに変換するのに必要な時間は、イメージのサイズによって異なります。 変換はベースイメージには影響しません。

説明

高速化イメージの名前空間名とリポジトリ名は、ベースイメージの名前空間名とリポジトリ名と同じです。 高速化イメージのタグ形式は、イメージの高速化モードによって異なります。

  • インデックスのみモードの場合、高速化イメージのタグ形式は、ベースイメージのタグに_accelerated サフィックスが付加されたものです。 高速化イメージは containerd ランタイムのみをサポートし、高速化イメージが使用されている場合は、ベースイメージのタグを削除することはできません。

  • フルモードの場合、高速化イメージのタグは次のいずれかの形式になります。

    • ベースイメージのタグに_accelerated サフィックスが付加されたもの。 この形式のタグを持つ高速化イメージは、Docker および Containerd ランタイムをサポートします。

    • ベースイメージのタグに_containerd_accelerated サフィックスが付加されたもの。 この形式のタグを持つ高速化イメージは、containerd ランタイムのみをサポートします。

      注: _containerd_accelerated サフィックスを含むタグを持つ高速化イメージを使用する場合、ベースイメージを削除することはできません。

  1. コンテナーレジストリコンソール にログインします。

  2. 上部のナビゲーションバーで、リージョンを選択します。

  3. 左側のナビゲーションウィンドウで、[インスタンス] をクリックします。

  4. [インスタンス] ページで、管理する Enterprise Edition インスタンスをクリックします。

  5. Container Registry Enterprise Edition インスタンスの管理ページの左側のナビゲーションウィンドウで、[リポジトリ] > [リポジトリ] を選択します。

  6. [リポジトリ] ページで、イメージの高速化を有効にするリポジトリを見つけます。 リポジトリの名前をクリックするか、[管理][アクション] 列の をクリックします。 表示されるページで、左上隅にある [編集] をクリックします。

  7. [設定の変更] ダイアログボックスの [高速化イメージ] セクションで、[有効] を選択し、高速化モードを選択して、[確認] をクリックします。

    • フルモード: このモードでは、コンテナーの起動が大幅に高速化されます。 高速化イメージのサイズは、ベースイメージのサイズの約 130% です。 システムが 1 GB サイズのイメージの高速化イメージを生成するには、約 25 秒かかります。 イメージレイヤーの高速化イメージレイヤーがすでに生成されている場合、システムはイメージレイヤーの高速化イメージレイヤーを再生成しません。

    • インデックスのみモード: このモードでは、コンテナーの起動時に、フルモードの効果の約 70% の高速化効果が得られます。 高速化イメージのサイズは、ベースイメージのサイズの約 3% です。 システムが 1 GB サイズのイメージの高速化イメージを生成するには、約 3 秒かかります。 システムは、すでにインデックスがあるイメージレイヤーのインデックスを再生成しません。

      重要

      インデックスのみモードはパブリックプレビュー中です。 本番環境で使用する前に、テスト環境でモードを確認することをお勧めします。

      説明
      • インデックスのみモードは、tar および tgz で圧縮されたイメージにのみ使用できます。 zstd などの他の圧縮方式で圧縮されたイメージには使用できません。

      • インデックスのみモードを使用してイメージを高速化する場合は、高速化イメージをベースイメージと一緒に使用する必要があります。 ベースイメージを削除することはできません。 フルモードを使用する場合は、高速化イメージを個別に使用できます。

      • インデックスのみモードは、Docker ランタイムをサポートしていません。

    リポジトリのイメージの高速化を有効にすると、システムがリポジトリにプッシュする各イメージは、自動的に高速化イメージに変換されます。 イメージが高速化イメージに変換されるたびに通知を受け取る場合は、イベント通知を構成できます。 たとえば、式ベースのトリガーを指定し、式を_accelerated$ に設定します。 詳細については、「イベント通知」をご参照ください。

  8. (オプション) [プリフェッチファイルリスト] を指定します。 このリストのファイルは、高速化イメージの起動時に優先的にプリフェッチされます。 コンテナーの起動時に大きなファイルを読み取る必要がある場合は、ファイルプリフェッチ機能を使用することをお勧めします。

    説明

    1 行に 1 つのファイルの絶対パスを入力します。 絶対パスがディレクトリの場合は、行の末尾にスラッシュ (/) を追加します。

aliyun-acr-acceleration-suite イメージ高速化コンポーネントをインストールする

高速化イメージを使用してコンテナーを起動するには、ACK クラスターのワーカーノードに aliyun-acr-acceleration-suite コンポーネントをインストールする必要があります。

  1. DADI 高速化イメージをサポートするには、ACK コンソールで [コンテナーイメージの高速化] を有効にして、新規または既存のノードプールに対してイメージの高速化を有効にします。

    ACK マネージドクラスター

    ノードプールを作成するときにイメージの高速化を有効にする

    1. ACK コンソール にログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。

    2. [クラスター] ページで、管理するクラスターを見つけて、その名前をクリックします。 左側のナビゲーションウィンドウで、[ノード] > [ノードプール] を選択します。

    3. [ノードプール] ページの [詳細オプション] セクションで、[コンテナーレジストリの高速化] を有効にします。 詳細については、「ノードプールを作成および管理する」をご参照ください。

    既存のノードプールに対してイメージの高速化を有効にする

    [コンテナーイメージの高速化] をオンまたはオフにすると、この操作は新しいノードに対してのみ有効になります。 この操作を既存のノードに適用するには、ノードプールからノードを削除し、ノードをノードプールに再度追加する必要があります。 詳細については、「ノードを削除する」および「既存の ECS インスタンスを ACK クラスターに追加する」をご参照ください。

    1. ACK コンソール にログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。

    2. [クラスター] ページで、管理するクラスターを見つけて、その名前をクリックします。 左側のナビゲーションウィンドウで、[ノード] > [ノードプール] を選択します。

    3. [ノードプール] ページで、変更するノードプールを見つけて、[アクション] 列の [編集] をクリックします。 [詳細オプション] セクションで、[コンテナーレジストリの高速化] を有効にし、指示に従ってノードプールの ConfigMap を更新します。

      [ノードプール] ページで、ノードプールの [ステータス] 列に [更新中] と表示されている場合、ノードプールは変更中です。 ノードプールのステータスが [アクティブ] に変わると、変更は完了です。

    その他のクラスター

    ワーカーノードプールを作成するときに、ノードにalibabacloud.com/image-accelerate-enabled: true ラベルを設定して、ノードの初期化時にイメージの高速化を有効にすることができます。 イメージの高速化ラベルが設定されると、ノードの初期化時に aliyun-acr-acceleration-suite コンポーネントが自動的にインストールされます。

    ノードプールを作成するときにイメージの高速化を有効にする

    1. ACK コンソール にログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。

    2. [クラスター] ページで、管理するクラスターを見つけて、その名前をクリックします。 左側のナビゲーションウィンドウで、[ノード] > [ノードプール] を選択します。

    3. [ノードプール] ページで、ノードプールを作成 をクリックします。 [ノードプールを作成] ページで、「ノードプールを作成および管理する」トピックの指示に従ってノードプールを構成します。 [詳細オプション] を展開し、[ノードラベル] セクションでノードに alibabacloud.com/image-accelerate-enabled: true ラベルを設定します。

    既存のノードプールに対してイメージの高速化を有効にする

    [コンテナーイメージの高速化] をオンまたはオフにすると、この操作は新しいノードに対してのみ有効になります。 この操作を既存のノードに適用するには、ノードプールからノードを削除し、ノードをノードプールに再度追加する必要があります。 詳細については、「ノードを削除する」および「既存の ECS インスタンスを ACK クラスターに追加する」をご参照ください。

    1. ACK コンソール にログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。

    2. [クラスター] ページで、管理するクラスターを見つけて、その名前をクリックします。 左側のナビゲーションウィンドウで、[ノード] > [ノードプール] を選択します。

    3. [ノードプール] ページで、イメージの高速化を有効にするノードプールを見つけて、[アクション] 列の [編集] をクリックします。 詳細オプション を展開し、[ノードラベル] セクションでノードに alibabacloud.com/image-accelerate-enabled: true ラベルを設定します。

  2. aliyun-acr-acceleration-suite コンポーネントをインストールします。

    1. ACK コンソール にログインします。

    2. ACK コンソールの左側のナビゲーションウィンドウで、[クラスター] をクリックします。

    3. [クラスター] ページで、aliyun-acr-acceleration-suite コンポーネントをインストールするクラスターの名前をクリックし、左側のナビゲーションウィンドウで [操作] > [アドオン] を選択します。

    4. その他[アドオン] ページの aliyun-acr-acceleration-suite[インストール] セクションで、 を見つけて、 をクリックします。

    5. [aliyun-acr-acceleration-suite をインストール] メッセージで、[OK] をクリックします。

      • [クラスター管理] ページの左側のナビゲーションウィンドウで、[ワークロード] > [daemonset] を選択します。 [daemonset] ページで、コンポーネントのデーモンのインストールの詳細を表示します。

      • [クラスター管理] ページの左側のナビゲーションウィンドウで、[ワークロード] > [デプロイメント] を選択します。 [デプロイメント] ページで、コンポーネントのデプロイメントのインストールの詳細を表示します。

      コンポーネントのすべてのポッドが起動されると、コンポーネントのインストールは完了です。

高速化イメージを有効にする

  1. 高速化イメージが存在するリポジトリのアクセス認証情報を構成します。

    警告

    イメージをプルするために使用するシークレットを構成する際には、最小権限の原則に従い、必要な権限のみを付与するようにしてください。 詳細については、「カスタムポリシーを RAM ユーザーにアタッチする」をご参照ください。

    • シークレットを使用せずにイメージリポジトリからイメージをプルできる aliyun-acr-credential-helper コンポーネントを使用します。

    • イメージをプルするために使用するシークレットのラベルを指定します。

      説明

      V0.2.6 以降の aliyun-acr-acceleration-suite コンポーネントのみがこの方法をサポートしています。

      次のコマンドを実行して、タイプが kubernetes.io/dockerconfigjson で、ラベルが images.alibabacloud.com/accelerated: true のシークレットを作成します。

      kubectl create secret docker-registry <SecretName> --docker-server=<RegistryVpcDomain> --docker-username=<UserName> --docker-password=<Password>
      kubectl label secrets <SecretName>  images.alibabacloud.com/accelerated="true"
  2. イメージの高速化ラベルをアタッチします。

    ポッドやデプロイメントなどのワークロードにイメージの高速化ラベルをアタッチできます。 また、ACK クラスターまたは ACK Serverless Kubernetes クラスターの名前空間にイメージの高速化ラベルをアタッチすることもできます。 オンデマンドイメージ読み込み機能は、高速化条件を満たす名前空間内のすべてのワークロードに適用されます。 これにより、ワークロードごとに YAML ファイルを編集する必要がなくなります。 次のいずれかの方法を使用して、特定のワークロードまたは名前空間内のすべてのワークロードにイメージの高速化ラベルをアタッチできます。

    説明

    ラベルの名前は k8s.aliyun.com/image-accelerate-mode で、ラベルの値は on-demand です。

    • ワークロードにイメージの高速化ラベルをアタッチします。

      次の例は、ポッドにイメージの高速化ラベルをアタッチする方法を示しています。 次のコマンドを実行して、デプロイメントによって管理されるポッドにイメージの高速化ラベルをアタッチします。

      kubectl edit deployment <デプロイメントの名前> -n <デプロイメントが存在する名前空間>

      k8s.aliyun.com/image-accelerate-mode: on-demand ラベルをデプロイメントの YAML ファイルに追加します。

      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: nginx-deployment
        labels:
          app: nginx
      spec:
        replicas: 1
        selector:
          matchLabels:
            app: nginx
        template:
          metadata:
            labels:
              app: nginx
              # オンデマンドモードを有効にする
              k8s.aliyun.com/image-accelerate-mode: on-demand
          spec:
            containers:
             # ACR インスタンスイメージ
             - image: test-registry-vpc.cn-hangzhou.cr.aliyuncs.com/test/nginx:latest
               name: test
               command: ["sleep", "3600"]
    • 名前空間にイメージの高速化ラベルをアタッチします。

      • ACK コンソールでイメージの高速化ラベルをアタッチします。

        1. ACK コンソール にログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。

        2. [クラスター] ページで、管理するクラスターを見つけて、その名前をクリックします。 左側のナビゲーションウィンドウで、[名前空間とクォータ] をクリックします。

        3. [名前空間] ページで、構成する名前空間を見つけて、[アクション] 列の [編集] をクリックします。

        4. [ラベル] セクションの [名前空間の編集] ダイアログボックスで、[変数キー]k8s.aliyun.com/image-accelerate-mode に、[変数値]on-demand に設定し、[OK] をクリックします。

      • CLI でイメージの高速化ラベルをアタッチします。

    kubectl label namespaces <YOUR-NAMESPACE> k8s.aliyun.com/image-accelerate-mode=on-demand

    名前空間にイメージの高速化ラベルをアタッチし、ベースイメージを高速化イメージに変換した場合、名前空間にポッドを作成または更新すると、aliyun-acr-acceleration-suite コンポーネントは自動的にポッドの高速化イメージの URL を使用してポッドのベースイメージの URL を置き換え、nodeSelector を追加してから、ポッドを高速化ノードにスケジュールします。