本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在 Elastic Be ECS anstalk 中使用託管的 Docker 平台分支
本主題提供有關 Amazon Linux 2 和 Amazon 2023 的ECS託管碼頭平台分支的資訊。如果您打算將其遷移到其中一個支持的平台分支,它也適用於AL1(也ECS託管)上的已退休平台分支多容器 Docker。
注意
2022 年 7 月 18 日,Elastic Beanstalk 將基於 Amazon LinuxAMI()AL1的所有平台分支的狀態設置為已退休。
從多容器泊塢視窗遷移 AL1
如果您目前正在使用在平台分支上運行的已淘汰的多容器 Docker,則可以遷移到最新的在 AL2 023 AL1 平台上ECS運行的分支。最新的平台分支可支援此已停用平台分支的所有功能。無需變更原始程式碼。如需詳細資訊,請參閱在 Amazon 2023 上將您的 Elastic Beanstalk 應用程式從ECS託管多容器泊塢視窗遷移AL1到 ECS。
ECS託管碼頭平台概觀
Elastic Beanstalk 使用 Amazon 彈性容器服務(AmazonECS)協調容器部署到ECS託管的 Docker 環境。Amazon ECS 提供工具來管理執行 Docker 容器的執行個體叢集。Elastic Beanstalk 負責處理 Amazon ECS 任務,包括群集創建,任務定義和執行。環境中的每個執行個體,均須執行由 Dockerrun.aws.json
v2 檔案定義的相同容器組合。為了充分利用 Docker,Elastic Beanstalk 允許您創建一個環境,讓您的 Amazon EC2 實例並排運行多個 Docker 容器。
下圖顯示一個範例 Elastic Beanstalk 環境,該環境設定在 Auto Scaling 群組中的每個 Amazon EC2 執行個體上執行三個 Docker 容器:

注意
Elastic Beanstalk 為其所有平台提供了可擴展性功能,您可以使用這些功能來自訂應用程式的部署和執行。對於在 Amazon Linux 2 平台上ECS執行的分支,這些功能的執行個體部署工作流程實作與其他平台不同。如需詳細資訊,請參閱在 Amazon Linux 2 及更新版本ECS上執行的執行個體部署工作流程。
由 Elastic Beanstalk 創建的 Amazon ECS 資源
當您使用ECS受管碼頭平台建立環境時,Elastic Beanstalk 會在建置環境時自動建立和設定多個 Amazon 彈性容器服務資源。這樣,它會在每個 Amazon EC2 執行個體上建立必要的容器。
-
Amazon ECS 群集 — Amazon 中的容器執行個體ECS被組織成叢集。與 Elastic Beanstalk 一起使用時,每個ECS託管的 Docker 環境總是會建立一個叢集。
-
Amazon ECS 任務定義 — Elastic Beanstalk 使用專案中的
Dockerrun.aws.json
v2 產生 Amazon ECS 任務定義,用於在環境中設定容器執行個體。 -
Amazon ECS 任務 — Elastic Beanstalk 與 Amazon 通信,ECS以在環境中的每個實例上運行任務以協調容器部署。在可擴展環境中,Elastic Beanstalk 會在執行個體每次新增到叢集時,起始新的工作。在極少數的情況中,您可能需要為容器和映像增加預留的空間。請參閱 設定 Elastic Beanstalk Docker 環境 一節來進一步了解。
-
Amazon ECS 容器代理程式 — 代理程式會在您環境中的執行個體上的 Docker 容器中執行。代理程式會輪詢 Amazon ECS 服務,並等待任務執行。
-
Amazon ECS 資料磁碟區 — Elastic Beanstalk 會在任務定義中插入磁碟區定義 (除了您在
Dockerrun.aws.json
v2 中定義的磁碟區外),以便於記錄收集。Elastic Beanstalk 會在容器執行個體上建立日誌磁碟區 (每個容器一個),路徑為
/var/log/containers/
。這些磁碟區會命名為containername
awseb-logs-
,並提供給容器來進行掛載。關於掛載這些磁碟區的方法,詳細資訊請參閱 容器定義格式。containername
Dockerrun.aws.json
第 2 個文件
容器執行個體需要名為的組態檔案Dockerrun.aws.json
。容器執行個體是指在 Elastic Beanstalk 環境中EC2執行ECS受管 Docker 的 Amazon 執行個體。此檔案為 Elastic Beanstalk 專用,可單獨使用,或是與原始碼套件中的原始碼與內容結合,用來在 Docker 平台上建立環境。
注意
的第 2 版格式Dockerrun.aws.json
增加了對每個 Amazon EC2 執行個體的多個容器的支援,並且只能與ECS託管的 Docker 平台搭配使用。該格式與支持不受管理的 Docker 平台分支的其他配置文件版本明顯不同。ECS
如Dockerrun.aws.json v2需有關更新格式和範例檔案的詳細資訊,請參閱《》。
Docker 影像
Elastic Beanstalk 的ECS託管 Docker 平台要求在創建 Elastic Beanstalk 環境之前預先構建圖像並存儲在公共或私有的在線圖像存儲庫中。
注意
Elastic Beanstalk 上的ECS受管理 Docker 平台不支援在部署期間建置自訂映像。Dockerfile
請在建立 Elastic Beanstalk 環境之前,先建置您的映像,並將這些映像部署到線上儲存庫中。
根據 Dockerrun.aws.json
v2 中的名稱來指定映像。
若要設定 Elastic Beanstalk 驗證私有儲存庫,請在您的 Dockerrun.aws.json
v2 檔案中加入 authentication
參數。
失敗的容器部署
如果 Amazon ECS 任務失敗,則 Elastic Beanstalk 環境中的一個或多個容器將無法啟動。Elastic Beanstalk 不會因為 Amazon 任務失敗而復原多容器環境。ECS如果容器無法在您的環境中啟動,請從 Elastic Beanstalk 主控台重新部署目前的版本或先前可正常運作的版本。
若要部署現有的版本
-
在您環境的區域中開啟 Elastic Beanstalk 主控台。
-
按一下應用程式名稱右方的 Actions (動作),然後按一下 View application versions (檢視應用程式版本)。
-
選擇應用程式的版本,然後按一下 Deploy (部署)。