全部產品
Search
文件中心

CloudOps Orchestration Service:Docker鏡像部署物

更新時間:Jan 20, 2026

如果應用源檔案是儲存在Container RegistryACR企業版中的Docker鏡像,可使用此部署物類型發布應用。

對於個人版ACR或第三方鏡像倉庫,通過僅執行命令部署物進行部署。

工作原理

重要
  • 當發布目標為ESS伸縮組時,部署期間伸縮活動會被暫停,部署結束後(無論成功或失敗)將自動回復。

  • 部署流程遵循先停後啟原則,即每次部署都會先執行停止指令碼,再執行啟動指令碼。

  • Docker鏡像會在部署時自動拉取至ECS執行個體,啟動指令碼中無需包含拉取鏡像的命令。

  1. 建立並發布部署物

    將應用源檔案資訊、啟動指令碼和停止指令碼配置為部署物。

    建立發布任務,選擇發布模式,將部署物發布至目標應用分組。

  2. 發布任務的自動化部署流程

    1. 擷取部署物資訊,包括Docker鏡像的資訊和應用的啟動/停止指令碼。

    2. 拉取Docker鏡像:從鏡像倉庫拉取鏡像至ECS執行個體。

    3. 執行停止指令碼:執行應用停止指令碼,停止舊版本應用。

    4. 執行啟動指令碼:執行應用啟動指令碼,啟動新版本應用。

適用範圍

  • 僅支援部署到Linux執行個體。

  • 啟動和停止指令碼僅支援Shell類型的指令碼。

操作步驟

  1. 準備應用、分組和ECS執行個體。

    在開始部署前,需要先在ECS應用管理中建立應用和分組,並將準備好的ECS執行個體加入到分組。

    1. 如果沒有ECS執行個體,前往ECS控制台-自訂購買頁面,建立Linux作業系統的ECS執行個體。

      建議ECS鏡像選擇Alibaba Cloud Linux 3.2104 LTS 64位或Ubuntu 22.04 64位。後續樣本中的指令碼基於這兩種鏡像編寫。如果使用其他鏡像,請參考樣本並根據實際情況修改指令碼。
    2. 前往ECS控制台-應用管理頁面,單擊匯入已有資源建立,建立應用和應用分組,並匯入ECS執行個體到應用分組。

    3. 為分組內的ECS執行個體安裝Docker。在應用分組的營運管理頁簽下,選擇安裝/卸載擴充程式來大量安裝Docker。

      如果ECS執行個體是基於自訂鏡像建立的,無法通過此方式安裝擴充程式。需要遠端連線到執行個體並手動安裝Docker
  2. 建立Docker鏡像部署物。

    1. 拉取樣本鏡像到本地,然後推送鏡像到企業版ACR執行個體倉庫。

      docker pull aliyun-computenest-opensource-registry.cn-hangzhou.cr.aliyuncs.com/default/aliyun-code-deploy:latest
    2. 前往ECS控制台-應用管理頁面,在我的應用程式頁簽下,單擊目標應用程式名稱。

    3. 在應用詳情頁,選擇部署物頁簽,然後單擊建立部署物

    4. 建立部署物頁面,部署物類型選擇Docker鏡像,並配置以下關鍵參數

      • ACR執行個體資訊: 填寫ACR企業版執行個體資訊。填寫鏡像版本後,系統將自動產生鏡像地址,該地址需在應用啟動指令碼中使用。image

      • 工作目錄:應用啟動/停止指令碼的執行目錄。樣本:/root/deploy

      • 應用啟動指令碼:將<鏡像地址>替換為實際地址。

        ### 發布時,Docker鏡像會被自動拉取到ECS上,可直接進行容器啟動操作。
        ### 啟動目前的版本的容器
        ### Start the current version of the container
        start_application() {
          image_name="<鏡像地址>"
          container_name="my-container"
          docker run -d -p 8080:8080 --name ${container_name} ${image_name}
        }
        
        start_application
      • 應用停止指令碼

        stop_application() {
          # 通過容器名查詢容器是否存在,如存在則刪除容器
          # Query whether the container exists by the container name, and delete the container if it exists
          container_name="my-container"
          container_id=$(docker ps -aq -f name=${container_name}) 
          if [ -n "$container_id" ]; then
            docker rm -f $container_id
          fi
        }
        
        stop_application
    5. 所有參數配置完成後,單擊確定儲存部署物。

  3. 返回部署物列表,找到剛建立的部署物,單擊發布。選擇目標分組,單擊確定開始部署。

  4. 結果驗證。

    1. 進入目標執行個體詳情頁,單擊遠端連線,選擇通過Workbench遠端連線。根據頁面提示登入,進入終端頁面。

    2. 執行curl http://localhost:8080/hello命令。返回Alibaba Spring Sample!表示部署成功。

重要欄位

欄位

說明

Container Registry地區

企業版ACR執行個體所在地區

Container Registry執行個體ID

企業版ACR執行個體ID

命名空間

鏡像倉庫所在命名空間

倉庫名稱

鏡像倉庫名稱

鏡像版本

待部署的Docker鏡像的版本

是否通過內網拉取鏡像

若選擇通過內網拉取鏡像,需確保 ACR 執行個體和 ECS 執行個體位於同一VPC內,並已配置專用網路的存取控制
否則將通過公網拉取鏡像,此時需確保 ECS 執行個體和 ACR 執行個體均已配置公網訪問。

工作目錄

應用的啟動/停止指令碼的工作目錄。

  • 需填寫絕對路徑。

  • 可填寫不存在的目錄,執行期間會自動建立。

應用啟動指令碼

用於啟動應用的Shell指令碼。

應用停止指令碼

用於停止應用的Shell指令碼。
指令碼需要能夠正確停止當前及歷史版本的應用。當沒有應用在運行時,指令碼也應能正常退出且不報錯。

例如,以下指令碼可停止名為my-container的容器(假設每個版本的容器名都叫做my-container),且在容器不存在時不會報錯:

container_name="my-container"
container_id=$(docker ps -aq -f name=${container_name}) 
if [ -n "$container_id" ]; then
  docker rm -f $container_id
fi