全部產品
Search
文件中心

Container Compute Service:使用按需載入鏡像加速容器啟動

更新時間:Nov 25, 2025

傳統容器鏡像在容器啟動前需要進行全量下載並解包,然而容器啟動可能僅依賴其中少部分鏡像內容,載入暫未需要的鏡像內容將導致容器啟動出現不必要的耗時。阿里雲Container Registry (ACR)企業版提供了DADI(Data Accelerator for Disaggregated Infrastructure)加速鏡像的製作與託管服務。Container Compute Service (ACS)整合了對DADI overlaybd加速鏡像格式的支援,允許容器按需載入鏡像檔案,從而大幅縮短啟動時間。本文介紹如何使用ACR企業版製作加速鏡像並在ACS中加速容器啟動。

前提條件

  • 已建立ACS叢集。具體操作,請參見建立ACS叢集

  • 已建立執行個體規格為標準版或進階版的ACR企業版執行個體,更多資訊,請參見建立企業版執行個體

  • 已在ACR企業版執行個體中配置ACS叢集可達的存取控制類型。如使用VPC網路,則添加ACS叢集所在VPC,參見配置專用網路的存取控制;使用公網網路,則確保白名單規則對ACS叢集開放,參見配置公網的存取控制

  • 如需使用僅索引模式加速,請提交工單開啟試用。

背景資訊

通過使用DADI加速鏡像,您可以加速工作負載的啟動效率,實現鏡像資料按需載入和線上解壓,大幅提升應用分發效率和彈性體驗。詳細內容,請參見按需載入容器鏡像

鏡像的加速效果與鏡像大小、鏡像倉庫網路等因素有關。經實測,基於Docker Hub的NodeBB鏡像(1.34 GB)啟動應用在鏡像拉取階段需耗費36s,整體應用啟動時間38s。基於加速鏡像啟動應用在鏡像拉取階段僅需4s,整體應用啟動時間僅需9s。

使用限制

  • 多架構鏡像暫不支援加速鏡像轉換。

  • Pod存活期間,加速鏡像必須保證持續可訪問,若使用僅索引模式,則加速鏡像及原始鏡像都必須保證持續可訪問。

開啟鏡像加速

目前支援倉庫層級配置,自動將推送的原始鏡像轉換為加速鏡像。鏡像轉換時間取決於您的鏡像大小,原始鏡像不受任何影響。

  1. 登入Container Registry控制台

  2. 在頂部功能表列,選擇所需地區。

  3. 在左側導覽列,選擇執行個體列表

  4. 執行個體列表頁面單擊目標企業版執行個體。

  5. 在企業版執行個體管理頁左側導覽列中選擇倉庫管理 > 鏡像倉庫

  6. 在鏡像倉庫頁面單擊目標鏡像倉庫名稱或目標鏡像倉庫右側操作列下的管理

  7. 在基本資料頁面左上方單擊編輯

  8. 修改基本資料對話方塊中,開啟鏡像加速,單擊確定

    說明

    開啟鏡像加速後,存量鏡像不會自動產生加速版本,需要手動觸發轉換。具體步驟如下:在Container Registry的執行個體列表中,選擇對應的企業版執行個體,進入倉庫管理頁面,找到目標鏡像所在的鏡像倉庫。在左側欄選擇鏡像版本,定位到需要加速的鏡像版本,點擊右側的加速鏡像轉換按鈕即可。

    加速鏡像有兩種轉換模式:

    • 完整模式下,產生的鏡像包含完整的鏡像內容,體積約為原始鏡像的130%,可以顯著提高容器啟動速度。產生的鏡像tag格式為原始鏡像tag加_containerd_accelerated尾碼。

    • 僅索引模式下,產生的鏡像僅包含每層內容的索引,體積約為原鏡像的3%,轉換速度較快,對容器啟動的加速效果約為完整模式下的70%。產生的鏡像tag格式為原始鏡像tag加_accelerated尾碼。

使用鏡像加速

為了啟動使用加速鏡像的容器,需要為ACS提供足夠的許可權以便拉取鏡像。預設情況下,加速鏡像會使用Pod YAML上填寫的imgePullSecrets進行匹配,匹配到的secret將作為加速鏡像的拉取密鑰。 同時,ACS提供了另外兩種方式配置許可權。

通過免密外掛程式

在ACS中正確安裝免密外掛程式,將自動為合格工作負載注入ACR倉庫的訪問憑證,無需手動維護訪問憑證的生命週期以及與工作負載的關聯。通過免密外掛程式啟動使用加速鏡像的容器步驟如下:

  1. 安裝並配置免密外掛程式,請參見免密拉取ACR鏡像

  2. 使用加速鏡像名建立工作負載。請確保工作負載使用了免密外掛程式配置項中關聯的ServiceAccount,並位於相同的命名空間下。樣本工作負載如下:

    完整模式

    說明

    ACR企業版根據Referrers API規範,在執行個體開啟完整模式鏡像加速功能後,加速鏡像製品將反向連結至原始鏡像。因此在ACS中使用加速鏡像時僅需填寫原始鏡像的tag。

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx-deployment
      labels:
        app: nginx
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
           # 此處填入原始鏡像名即可
           - image: test-registry-vpc.cn-hangzhou.cr.aliyuncs.com/test/nginx:latest
             name: test
             command: ["sleep", "3600"]

    僅索引模式

    說明

    ACR企業版執行個體開啟僅索引模式鏡像加速功能後,鏡像倉庫符合Referrers API規範,加速鏡像製品將反向連結至原始鏡像,在ACS中使用加速鏡像時僅需填寫原始鏡像的tag。

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx-deployment
      labels:
        app: nginx
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
           # 此處填入原始鏡像名即可
           - image: test-registry-vpc.cn-hangzhou.cr.aliyuncs.com/test/nginx:latest
             name: test
             command: ["sleep", "3600"]

通過建立Secret

您可以手動維護鏡像拉取密鑰,通過建立kubernetes.io/dockerconfigjson類型的Secret,配置ACR容器鏡像倉庫的訪問賬密,可以靈活啟用加速鏡像功能。建立Secret並啟動使用加速鏡像的容器步驟如下:

  1. 建立加速鏡像專用的Secret,需要包含名稱首碼acr-credential-,或者標籤值images.alibabacloud.com/accelerated: true。樣本如下:

    建立包含名稱首碼的專用Secret

    kubectl create secret docker-registry acr-credential-test --docker-server=RegistryVpcDomain --docker-username=UserName --docker-password=Password

    建立包含標籤值的專用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"
    警告

    請確保您的鏡像拉取密鑰許可權按最小許可權原則配置,僅包含拉取本叢集所需業務鏡像的許可權。更多詳情,請參見授予RAM使用者自訂策略

  2. 使用加速鏡像名及Secret建立工作負載。樣本如下:

    完整模式

    說明

    ACR企業版執行個體開啟完整模式鏡像加速功能後,鏡像倉庫符合Referrers API規範,加速鏡像製品將反向連結至原始鏡像,在ACS中使用加速鏡像時僅需填寫原始鏡像的tag。

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx-deployment
      labels:
        app: nginx
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
        spec:
          imagePullSecrets:
          # 此處填入正確的Secret名
          - name: acr-credential-test
          containers:
           # 此處填入原始鏡像名即可
           - image: test-registry-vpc.cn-hangzhou.cr.aliyuncs.com/test/nginx:latest
             name: test
             command: ["sleep", "3600"]

    僅索引模式

    說明

    ACR企業版執行個體開啟僅索引模式鏡像加速功能後,鏡像倉庫符合Referrers API規範,加速鏡像製品將反向連結至原始鏡像,在ACS中使用加速鏡像時僅需填寫原始鏡像的tag。

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx-deployment
      labels:
        app: nginx
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
        spec:
          imagePullSecrets:
          # 此處填入正確的Secret名
          - name: acr-credential-test
          containers:
           # 此處填入原始鏡像名即可
           - image: test-registry-vpc.cn-hangzhou.cr.aliyuncs.com/test/nginx:latest
             name: test
             command: ["sleep", "3600"]