

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

# 在 Elastic Beanstalk 中使用 ECS 受管 Docker 平台分支
<a name="create_deploy_docker_ecs"></a>

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

**從 AL1 上的多容器 Docker 遷移**  
在 [2022 年 7 月 18 日，](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2022-07-18-linux-al1-retire.html)Elastic Beanstalk 會根據 Amazon Linux AMI (AL1) 將所有平台分支的狀態設定為**已淘汰**。雖然本章提供此淘汰平台的組態資訊，但我們強烈建議您遷移至最新的支援平台分支。如果您目前正在使用*執行於 AL1 的已淘汰多容器 Docker *平台分支，可以遷移至*執行於 AL2023 上的最新 ECS* 平台分支。最新的平台分支可支援此已停用平台分支的所有功能。無需變更原始程式碼。如需詳細資訊，請參閱[將您的 Elastic Beanstalk 應用程式從 AL1 上的 ECS 受管多容器 Docker 遷移至 Amazon Linux 2023 上的 ECS](migrate-to-ec2-AL2-platform.md)。

## ECS 受管 Docker 平台概觀
<a name="create_deploy_docker_ecs_platform"></a>

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 具有負載平衡器、自動擴展群組和容器化任務的環境。](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/aeb-multicontainer-docker-example.png)


## 由 Elastic Beanstalk 建立的 Amazon ECS 資源
<a name="create_deploy_docker_ecs_resources"></a>

當您使用 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}}`，並提供給容器來進行掛載。關於掛載這些磁碟區的方法，詳細資訊請參閱 [容器定義格式](create_deploy_docker_v2config.md#create_deploy_docker_v2config_dockerrun_format)。

如需 Amazon ECS 資源的詳細資訊，請參閱《[Amazon Elastic Container Service 開發人員指南](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/Welcome.html)》。

## `Dockerrun.aws.json` v2 檔案
<a name="create_deploy_docker_ecs_dockerrun"></a>

容器執行個體需要名為 的組態檔案`Dockerrun.aws.json`。*容器執行個體*是指在 Elastic Beanstalk 環境中執行 ECS 受管 Docker 的 Amazon EC2 執行個體。此檔案為 Elastic Beanstalk 專用，可單獨使用，或是與[原始碼套件](applications-sourcebundle.md)中的原始碼與內容結合，用來在 Docker 平台上建立環境。

**注意**  
第 2 版 `Dockerrun.aws.json` 格式新增了每個 Amazon EC2 執行個體執行多個容器的支援功能，但只能搭配 ECS 受管 Docker 平台使用。格式與支援非由 ECS 管理之 Docker 平台分支的其他組態檔案版本明顯不同。

 如需更新格式和範例檔案的詳細資訊，[`Dockerrun.aws.json` v2](create_deploy_docker_v2config.md#create_deploy_docker_v2config_dockerrun)請參閱 。

## Docker 影像
<a name="create_deploy_docker_ecs_images"></a>

 適用於 Elastic Beanstalk 的 ECS 受管 Docker 平台要求在建立 Elastic Beanstalk 環境之前，將映像預先建置並存放在公有或私有的線上映像儲存庫中。

**注意**  
Elastic Beanstalk 上的 ECS 受管 Docker 平台，並不支援在部署時使用 `Dockerfile` 來建置自訂映像。請在建立 Elastic Beanstalk 環境之前，先建置您的映像，並將這些映像部署到線上儲存庫中。

根據 `Dockerrun.aws.json` v2 中的名稱來指定映像。

若要設定 Elastic Beanstalk 驗證私有儲存庫，請在您的 `Dockerrun.aws.json` v2 檔案中加入 `authentication` 參數。

## 失敗的容器部署
<a name="create_deploy_docker_ecs_rollback"></a>

 如果 Amazon ECS 的工作失敗，則您 Elastic Beanstalk 環境中的一個或多個容器將不會開始執行。因為 Amazon ECS 工作失敗，所以 Elastic Beanstalk 不會還原多容器環境。如果容器無法在您的環境中啟動，請從 Elastic Beanstalk 主控台重新部署目前的版本或先前可正常運作的版本。

**若要部署現有的版本**

1. 在您環境的區域中開啟 Elastic Beanstalk 主控台。

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

1. 選擇應用程式的版本，然後按一下 **Deploy (部署)**。

## 擴展 Elastic Beanstalk 的 ECS 型 Docker 平台
<a name="create_deploy_docker_ecs_extending_linux"></a>

Elastic Beanstalk 提供可擴展性功能，可讓您將自己的命令、指令碼、軟體和組態套用至應用程式部署。*ECS AL2 和 AL2023 *平台分支的部署工作流程與其他 Linux 型平台略有不同。如需詳細資訊，請參閱[執行於 Amazon Linux 2 和更新版本的 ECS 的執行個體部署工作流程AL2 和更新版本上 ECS 的執行個體部署工作流程](platforms-linux-extend.workflow.ecs-al2.md)。