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

Container Registry:コンテナイメージのオンデマンドロード

最終更新日:Aug 30, 2026

従来、コンテナを実行するには、起動前にイメージ全体をダウンロードして解凍する必要がありました。しかし、多くの場合、コンテナの起動に必要なイメージデータはごく一部であり、これが起動時間の長期化を招いていました。Container Registry Enterprise Edition のオンデマンドロード機能は、イメージ全体ではなく、起動に不可欠なイメージデータのみをダウンロードして解凍することで、この問題に対処します。この方法により、アプリケーションのデプロイが大幅に高速化され、スケーリングの弾力性が向上します。

前提条件

  • サポートされている Container Service for Kubernetes (ACK) クラスターが利用可能であること。

    説明

    高速化イメージは、v1.16.9 以降の ACK マネージド/専用クラスター、および v1.26.3 以降の ACK Edge クラスター、ACK Serverless クラスター、ACK Lingjun クラスター、Alibaba Cloud Container Compute Service (ACS) クラスターで使用できます。クラスターを作成する際、オペレーティングシステムは Alibaba Cloud Linux 2.1903、Alibaba Cloud Linux 3.2104、Alibaba Cloud Linux 3.2104 LTS 64 ビット ARM 版、Alibaba Cloud Linux UEFI 2.1903、または CentOS 7.9 である必要があります。

  • Container Registry Enterprise Edition インスタンスを作成済みであること。詳細については、「Container Registry Enterprise Edition インスタンスの作成」をご参照ください。

    重要

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

    • フルモード:Standard または Advanced エディションがサポートされています。

    • インデックスのみモード:Basic、Standard、または Advanced エディションがサポートされています。

  • ACK または ACK Serverless クラスターの VPC が、Container Registry Enterprise Edition インスタンス用に設定されている必要があります。高速化イメージは VPC 内で使用する必要があります。詳細については、「VPC のアクセス制御を設定する」をご参照ください。

背景情報

Container Registry Enterprise Edition のオンデマンドロード機能を使用すると、デプロイで高速化イメージを利用できます。これにより、完全なイメージダウンロードが不要になり、オンザフライでの解凍が可能になるため、アプリケーションの配布効率とスケーリングの弾力性が大幅に向上します。高速化の効果は、イメージサイズやリポジトリのネットワーク条件などの要因によって異なります。あるテストでは、Docker Hub の 1.34 GB の NodeBB イメージを使用するアプリケーションで、イメージのプルに 36 秒、合計起動時間に 38 秒かかりました。高速化イメージを使用することで、プル時間は 4 秒に短縮され、合計起動時間はわずか 9 秒でした。

制限事項

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

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

  • 既存のイメージは、手動で高速化イメージに変換する必要があります。

利用可能なリージョン

オンデマンドロード機能は、Alibaba Finance Cloud および Alibaba Gov Cloud リージョンでは利用できません。

高速化イメージへの変換

リポジトリを設定して、プッシュされた元のイメージを自動的に高速化イメージに変換できます。変換時間はイメージサイズによって異なります。元のイメージは影響を受けません。

説明

高速化イメージは、元のイメージと同じ名前空間とリポジトリ名を使用します。タグの形式は次のとおりです:

  • インデックスのみモード:高速化イメージのタグは、元のイメージタグに _accelerated サフィックスが付いたものです。このモードは containerd ランタイムでのみサポートされます。高速化イメージの使用中は、元のイメージタグを削除できません。

  • フルモード:

    • _accelerated サフィックスが付いた高速化イメージは、Docker と containerd の両方のランタイムをサポートします。

    • _containerd_accelerated サフィックスが付いた高速化イメージは、containerd ランタイム専用です。

      _containerd_accelerated サフィックスが付いたイメージを使用している場合、その高速化イメージまたは元のイメージを削除することはできません。

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

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

  3. 左側メニューで、インスタンス をクリックします。

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

  5. インスタンス詳細ページの左側メニューで、リポジトリ > リポジトリ を選択します。

  6. [リポジトリ] ページで、対象のリポジトリの名前をクリックするか、操作 列の 管理 をクリックします。 [基本情報] ページの左上隅で、編集 をクリックします。

  7. 基本情報の変更 ダイアログボックスで、高速化イメージ を有効にし、モードを選択して、OK をクリックします。

    • [フルモード]:コンテナの起動を大幅に高速化します。生成される高速化イメージのサイズは、元のイメージサイズの約 130% です。1 GB の元のイメージから高速化イメージを生成するには、約 25 秒かかります。既存のイメージレイヤーは再生成されません。

    • インデックスのみモード:フルモードの約 70% の高速化効果を提供します。高速化イメージのサイズは、元のイメージサイズの約 3% です。1 GB の元のイメージから高速化イメージを生成するには、約 3 秒かかります。インデックスが作成済みのイメージレイヤーは再インデックスされません。

      重要

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

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

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

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

    イメージの高速化を設定した後、プッシュされたイメージは自動的に変換タスクをトリガーします。イメージ変換の完了時に通知を受け取りたい場合は、イベント通知を設定できます。たとえば、式を _accelerated$ に設定します。詳細については、「イベント通知の設定」をご参照ください。

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

    説明

    各行には、ファイルの絶対パスを含める必要があります。ディレクトリの場合、パスはスラッシュ (/) で終わる必要があります。

イメージ高速化コンポーネントのインストール

高速化コンテナを起動するには、ワーカーノードにオンデマンドロード用のストレージプラグインをインストールする必要があります。

  1. DADI 高速化イメージをサポートするには、ack-dadi コンポーネントをインストールして、ノードプールのノードでイメージ高速化を有効にします。

    1. ACK コンソールにログインします。左側メニューで、クラスターリスト をクリックします。

    2. クラスターリスト ページで、クラスターの名前をクリックします。左側メニューで、ノード > ノードプール をクリックします。

    3. ノードプール ページで、対象のノードプールをクリックし、ノードコンポーネント タブをクリックします。

    4. ノードコンポーネントのインストール をクリックし、右側に表示されるパネルで ack-dadi コンポーネントを選択し、指示に従ってインストールします。

  2. イメージ高速化コンポーネントをインストールします。(v1.34 より前のクラスターでのみ必須)

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

    2. クラスターリスト ページで、目的のクラスターの名前をクリックします。 左側のナビゲーションペインで、アドオン管理 をクリックします。

    3. アドオン管理 ページの さらに表示 セクションで [aliyun-acr-acceleration-suite] を見つけ、インストール をクリックします。

    4. ヒント ダイアログボックスで、OK をクリックします。

      • 左側メニューで、ワークロード > Daemon Sets を選択します。デーモンセット ページで、コンポーネントの DaemonSet のインストール詳細を表示します。

      • 左側メニューで、ワークロード > 展開 を選択します。ステートレス ページで、コンポーネントの Deployment のインストール詳細を表示します。

      すべての Pod が実行中になったら、コンポーネントのインストールは完了です。

高速化イメージの有効化

  1. リポジトリアクセス資格情報を設定します。

    警告

    最小権限の原則に従って、イメージプル Secret を設定します。クラスターが使用するサービスイメージをプルするために必要な権限のみを付与します。詳細については、「RAM ユーザーへのカスタムポリシーの付与」をご参照ください。

    • オプション 1:aliyun-acr-credential-helper コンポーネントを使用します。

    • オプション 2:イメージプル Secret にラベルを追加します。

      説明

      この方法は、aliyun-acr-acceleration-suite コンポーネントのバージョン 0.2.6 以降でのみサポートされます。

      kubernetes.io/dockerconfigjson タイプの Secret を作成し、images.alibabacloud.com/accelerated: true ラベルを Secret に追加します。

      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 クラスターのワークロード (Pod や Deployment など) 、または名前空間全体に、イメージアクセラレーションラベルを追加できます。名前空間にラベルを付けると、その名前空間内のすべての対象ワークロードでオンデマンドローディングが有効になり、各ワークロードの YAML ファイルを変更する必要がなくなります。要件に最も適した方法を選択してください。

    説明

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

    • ワークロードにイメージ高速化ラベルを追加します。

      次の例は、Deployment によって管理される Pod にラベルを追加する方法を示しています。次のコマンドを実行して Deployment を編集します。

      kubectl edit deployment <DeploymentName> -n <DeploymentNamespace>

      Deployment の YAML ファイルに、 k8s.aliyun.com/image-accelerate-mode: on-demand ラベルを追加します。

      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"]
    • 名前空間にイメージ高速化ラベルを追加します。

      • コンソールでイメージ高速化ラベルを追加します。

        1. ACK コンソールにログインし、左側のナビゲーションバーで クラスターリスト を選択します。

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

        3. 名前空間 ページで、対象の名前空間を見つけ、操作 列の 編集 をクリックします。

        4. 名前空間の編集 ダイアログボックスで、タグ の 変数名 を k8s.aliyun.com/image-accelerate-mode に、タグ の 可変値 を on-demand に設定し、OK をクリックします。

      • コマンドラインを使用してイメージ高速化ラベルを追加します。

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

    高速化ラベルを追加し、元のイメージを高速化イメージに変換すると、高速化コンポーネントは自動的に元のイメージアドレスを高速化イメージアドレスに置き換え、Pod の作成または更新時に Pod を高速化ノードにスケジュールするための nodeSelector を名前空間内に追加します。