在 Elastic Beanstalk 中使用 ECS 受管 Docker 平台分支 - AWS Elastic Beanstalk

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

在 Elastic Beanstalk 中使用 ECS 受管 Docker 平台分支

本主題提供 Amazon Linux 2 和 Amazon Linux 2023 Elastic Beanstalk ECS 受管 Docker 平台分支的概觀。它還提供 Docker ECS 受管平台特有的組態資訊。

從 AL1 上的多容器 Docker 遷移

2022 年 7 月 18 日,Elastic Beanstalk 已將所有以 Amazon Linux AMI (AL1) 為基礎的平台分支狀態設為已淘汰雖然本章提供此淘汰平台的組態資訊,但我們強烈建議您遷移到最新的支援平台分支。如果您目前正在使用執行於 AL1 的已淘汰多容器 Docker 平台分支,可以遷移至執行於 AL2023 上的最新 ECS 平台分支。最新的平台分支可支援此已停用平台分支的所有功能。無需變更原始程式碼。如需詳細資訊,請參閱將您的 Elastic Beanstalk 應用程式從 AL1 上的 ECS 受管多容器 Docker 遷移至 Amazon Linux 2023 上的 ECS

ECS 受管 Docker 平台概觀

Elastic Beanstalk 使用 Amazon Elastic Container Service (Amazon ECS) 來協調 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 執行個體上,各執行 3 個 Docker 容器:

Elastic Beanstalk environment with load balancer, auto scaling group, and containerized tasks.

由 Elastic Beanstalk 建立的 Amazon ECS 資源

當您使用 ECS 受管 Docker 平台來建立環境時,Elastic Beanstalk 會在建置環境的同時,自動建立和設定數個 Amazon Elastic Container Service 資源,同時建置相關環境。執行此操作時,它會在每個 Amazon EC2 執行個體上建立必要的容器。

  • Amazon ECS 叢集 – 會將 Amazon ECS 中的容器執行個體整編為叢集。搭配 Elastic Beanstalk 使用時,一律會針對每個 ECS 受管 Docker 環境建立一個叢集。ECS 叢集也包含 Auto Scaling 群組容量提供者和其他資源。

  • Amazon ECS 工作定義 – Elastic Beanstalk 會使用您專案中的 Dockerrun.aws.json v2 來產生 Amazon ECS 工作的定義,此定義可用來設定環境中的容器執行個體。

  • Amazon ECS 工作 – Elastic Beanstalk 會與 Amazon ECS 進行通訊,在環境中的每個執行個體上執行工作,來統籌容器的部署。在可擴展環境中,Elastic Beanstalk 會在執行個體每次新增到叢集時,起始新的工作。

  • Amazon ECS 容器代理程式 – 在您環境執行個體上的 Docker 容器中執行的代理程式。代理程式會輪詢 Amazon ECS 服務和等待工作執行。

  • Amazon ECS 資料磁碟區 – 除了您在 Dockerrun.aws.json v2 中定義的磁碟區之外,Elastic Beanstalk 還會將磁碟區定義插入任務定義,以方便收集日誌。

    Elastic Beanstalk 會在容器執行個體上建立日誌磁碟區 (每個容器一個),路徑為 /var/log/containers/containername。這些磁碟區會命名為 awseb-logs-containername,並提供給容器來進行掛載。關於掛載這些磁碟區的方法,詳細資訊請參閱 容器定義格式

如需 Amazon ECS 資源的詳細資訊,請參閱 Amazon Elastic Container Service 開發人員指南

Dockerrun.aws.json v2 檔案

容器執行個體需要名為 的組態檔案Dockerrun.aws.json容器執行個體是指在 Elastic Beanstalk 環境中執行 ECS 受管 Docker 的 Amazon EC2 執行個體。此檔案為 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 環境中的一個或多個容器將不會開始執行。因為 Amazon ECS 工作失敗,所以 Elastic Beanstalk 不會還原多容器環境。如果容器無法在您的環境中啟動,請從 Elastic Beanstalk 主控台重新部署目前的版本或先前可正常運作的版本。

若要部署現有的版本
  1. 在您環境的區域中開啟 Elastic Beanstalk 主控台。

  2. 按一下應用程式名稱右方的 Actions (動作),然後按一下 View application versions (檢視應用程式版本)

  3. 選擇應用程式的版本,然後按一下 Deploy (部署)

擴展 Elastic Beanstalk 的 ECS 型 Docker 平台

Elastic Beanstalk 提供可擴展功能,可讓您將自己的命令、指令碼、軟體和組態套用至應用程式部署。ECS AL2 和 AL2023 平台分支的部署工作流程與其他 Linux 平台略有不同。如需詳細資訊,請參閱執行於 Amazon Linux 2 和更新版本的 ECS 的執行個體部署工作流程