

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

# EC2 的 Amazon ECS 任務聯網選項
<a name="task-networking"></a>

在 Amazon EC2 執行個體上託管的 Amazon ECS 任務聯網行為取決於任務定義中定義的*網路模式*。建議使用 `awsvpc` 網路模式，除非您有使用不同網路模式的特定需要。

以下是可用的網路模式。


| 網路模式 | EC2 上的 Linux 容器 | EC2 上的 Windows 容器 | Description | 
| --- | --- | --- | --- | 
|  `awsvpc`  |  是  |  是  |  任務會配置專屬的彈性網路介面 (ENI) 與主要私有 IPv4 位址或 IPv6 位址。這會為任務提供與 Amazon EC2 執行個體相同的聯網屬性。  | 
|  `bridge`  |  是  |  否  |  任務會使用 Docker 的 Linux 內建虛擬網路，該虛擬網路在託管任務的每個 Amazon EC2 執行個體內執行。Linux 上的內建虛擬網路會使用 `bridge` Docker 網路驅動程式。如果未在任務定義中指定網路模式，則此為 Linux 上的預設網路模式。  | 
|  `host`  |  是  |  否  |  任務會使用主機網路，並直接將容器連接埠映射至託管任務的 Amazon EC2 執行個體 ENI，以略過 Docker 的內建虛擬網路。動態連接埠映射無法在此網路模式下使用。任務定義中使用此模式的容器必須指定特定 `hostPort` 數字。主機上的連接埠號碼無法由多個任務使用。因此，您無法在單一 Amazon EC2 執行個體上執行同一個任務定義的多個任務。  | 
|  `none`  |  是  |  否  |  任務沒有外部網路連線。  | 
|  `default`  |  否  |  是  |  任務會使用 Docker 的 Windows 內建虛擬網路，該虛擬網路在託管任務的每個 Amazon EC2 執行個體內執行。Windows 上的內建虛擬網路會使用 `nat` Docker 網路驅動程式。如果未在任務定義中指定網路模式，則此為 Windows 上的預設網路模式。  | 

如需有關 Linux 上 Docker 聯網的詳細資訊，請參閱 *Docker Documentation* 中的 [Networking overview](https://docs.docker.com/engine/network/)。

如需有關 Windows 上 Docker 聯網的詳細資訊，請參閱 Microsoft *Containers on Windows Documentation* 中的 [Windows container networking](https://learn.microsoft.com/en-us/virtualization/windowscontainers/container-networking/architecture)。

## 在純 IPv6 模式下使用 VPC
<a name="networking-ipv6-only"></a>

在純 IPv6 組態中，Amazon ECS 任務只會透過 IPv6 進行通訊。若要為純 IPv6 組態設定 VPC 與子網路，您必須將 IPv6 CIDR 區塊新增至 VPC，並建立僅包含 IPv6 CIDR 區塊的新子網路。如需詳細資訊，請參閱 *Amazon VPC User Guide* 中的 [Add IPv6 support for your VPC](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-migrate-ipv6-add.html) 與 [Create a subnet](https://docs.aws.amazon.com/vpc/latest/userguide/create-subnets.html)。

您還必須更新路由表，加入 IPv6 目標，並在安全群組中設定 IPv6 規則。如需詳細資訊，請參閱 *Amazon VPC User Guide* 中的 [Configure route tables](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Route_Tables.html) 與 [Configure security group rules](https://docs.aws.amazon.com/vpc/latest/userguide/working-with-security-group-rules.html)。

適用下列注意事項：
+ 您可透過以下兩種方式，將純 IPv4 或雙堆疊的 Amazon ECS 服務升級為純 IPv6 組態：一是直接將服務更新為使用純 IPv6 子網路；二是建立平行的純 IPv6 服務，再透過 Amazon ECS 藍綠部署將流量遷移至新服務。如需有關 Amazon ECS 藍/綠部署的詳細資訊，請參閱 [Amazon ECS 藍/綠部署](deployment-type-blue-green.md)。
+ 純 IPv6 的 Amazon ECS 服務必須使用具 IPv6 目標群組的雙堆疊負載平衡器。若要遷移的現有 Amazon ECS 服務後端掛載了 Application Load Balancer 或 Network Load Balancer，可建立新的雙堆疊負載平衡器並將流量從舊負載平衡器遷移過去，或直接更新現有負載平衡器的 IP 位址類型。

  如需有關 Network Load Balancer 的詳細資訊，請參閱 *User Guide for Network Load Balancers* 中的 [Create a Network Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/create-network-load-balancer.html) 與 [Update the IP address types for your Network Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/load-balancer-ip-address-type.html)。如需有關 Application Load Balancer 的詳細資訊，請參閱 *User Guide for Application Load Balancers* 中的 [Create an Application Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/create-application-load-balancer.html) 與 [Update the IP address types for your Application Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-ip-address-type.html)。
+ Windows 不支援純 IPv6 組態。若要在純 IPv6 組態中執行任務，必須使用 Amazon ECS 最佳化 Linux AMI。如需有關 Amazon ECS 最佳化 AMI 的詳細資訊，請參閱 [Amazon ECS 最佳化 Linux AMI](ecs-optimized_AMI.md)。
+ 在啟動容器執行個體以在純 IPv6 組態中執行任務時，必須透過 `--enable-primary-ipv6` EC2 參數為該執行個體設定一個主要 IPv6 位址。
**注意**  
如果沒有主要 IPv6 位址，在容器執行個體上以主機或橋接網路模式執行的任務，將無法向負載平衡器或 AWS Cloud Map註冊。

  如需有關用於執行 Amazon EC2 執行個體的 `--enable-primary-ipv6` 的詳細資訊，請參閱 *AWS CLI Command Reference* 中的 [run-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/run-instances.html)。

  如需使用 啟動容器執行個體的詳細資訊 AWS 管理主控台，請參閱 [啟動 Amazon ECS Linux 容器執行個體](launch_container_instance.md)。
+ 依預設，Amazon ECS 容器代理程式會透過偵測執行個體的預設 IPv4 與 IPv6 路由，判斷容器執行個體是否相容純 IPv6 組態。若要覆寫此行為，您可以在執行個體的 `/etc/ecs/ecs.config` 檔案中將 ` ECS_INSTANCE_IP_COMPATIBILITY` 參數設定為 `ipv4` 或 `ipv6`。
+ 任務必須使用版本 `1.99.1` 或更新版本的容器代理程式。如需有關如何檢查執行個體使用之代理程式版本以及視需要進行更新的資訊，請參閱[更新 Amazon ECS 容器代理程式](ecs-agent-update.md)。
+ 若要讓純 IPv6 組態中的 Amazon ECS 任務與純 IPv4 端點通訊，您可以設定 DNS64 與 NAT64，實現從 IPv6 到 IPv4 的網路位址轉換。如需更多詳細資訊，請參閱《*Amazon VPC 使用者指南*》中的「[DNS64 和 NAT64](https://docs.aws.amazon.com/vpc/latest/userguide/nat-gateway-nat64-dns64.html)」。
+ 在純 IPv6 組態中，Amazon ECS 工作負載從 Amazon ECR 拉取映像時，必須使用 Amazon ECR 雙堆疊映像 URI 端點。如需詳細資訊，請參閱 *Amazon Elastic Container Registry User Guide* 中的 [Getting started with making requests over IPv6](https://docs.aws.amazon.com/AmazonECR/latest/userguide/ecr-requests.html#ipv6-access-getting-started)。
**注意**  
Amazon ECR 不支援可供純 IPv6 組態中任務使用的雙堆疊介面 VPC 端點。如需詳細資訊，請參閱 *Amazon Elastic Container Registry User Guide* 中的 [Getting started with making requests over IPv6](https://docs.aws.amazon.com/AmazonECR/latest/userguide/ecr-requests.html#ipv6-access-getting-started)。
+ 純 IPv6 組態不支援 Amazon ECS Exec。

### AWS 區域 支援 IPv6-only 模式
<a name="networking-ipv6-only-regions"></a>

您可以在 Amazon ECS 可用的下列 AWS 區域中，在IPv6-only 的組態中執行任務：
+ 美國東部 (俄亥俄)
+ 美國東部 (維吉尼亞北部)
+ 美國西部 (加利佛尼亞北部)
+ 美國西部 (奧勒岡)
+ 非洲 (開普敦)
+ 亞太地區 (香港)
+ 亞太區域 (海德拉巴)
+ 亞太地區 (雅加達)
+ 亞太地區 (墨爾本)
+ 亞太地區 (孟買)
+ 亞太區域 (大阪)
+ 亞太區域 (首爾)
+ 亞太區域 (新加坡)
+ 亞太地區 (雪梨)
+ 亞太區域 (東京)
+ 加拿大 (中部)
+ 加拿大西部 (卡加利)
+ 中國 (北京)
+ 中國 (寧夏)
+ 歐洲 (法蘭克福)
+ 歐洲 (倫敦)
+ 歐洲 (米蘭)
+ Europe (Paris)
+ 歐洲 (西班牙)
+ 以色列 (特拉維夫)
+ Middle East (Bahrain)
+ 中東 (阿拉伯聯合大公國)
+ 南美洲 (聖保羅)
+ AWS GovCloud （美國東部）
+ AWS GovCloud （美國西部）

# 為 Amazon ECS 任務配置網路介面
<a name="task-networking-awsvpc"></a>

`awsvpc` 網路模式提供的任務聯網功能可為 Amazon ECS 任務提供與 Amazon EC2 執行個體相同的聯網屬性。使用 `awsvpc` 網路模式可簡化容器聯網設定，因為您有更高的控制權來控管應用程式彼此之間以及應用程式與 VPC 內其他服務之間的通訊方式。`awsvpc` 網路模式也讓可以您在任務中更精細地使用安全群組與網路監控工具，為您的容器提供更高的安全性。您也可以利用其他 Amazon EC2 聯網功能，例如 VPC 流程日誌，以便您監控任務的進出流量。此外，屬於同一個任務的容器可以透過 `localhost` 界面進行通訊。

任務彈性網路介面 (ENI) 是 Amazon ECS 的全受管功能。Amazon ECS 會建立 ENI 並將其連接到具有指定安全群組的主機 Amazon EC2 執行個體。任務在 ENI 上傳送和接收網路流量的方式，與 Amazon EC2 執行個體處理其主要網路介面的方式相同。根據預設，會對每個任務 ENI 指派一個私有 IPv4 地址。如果已對雙堆疊模式啟用 VPC，並且您使用具有 IPv6 CIDR 區塊的子網路，則任務 ENI 也會收到 IPv6 地址。每個任務只能有一個 ENI。

這些 ENI 會顯示在帳戶的 Amazon EC2 主控台中。帳戶無法卸離或修改這些 ENI。這是為了防止意外刪除與正在執行之任務相關聯的 ENI。您可以在 Amazon ECS 主控台中或使用 [DescribeTasks](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_DescribeTasks.html) API 操作來檢視任務的 ENI 連接資訊。當任務停止或服務縮小規模時，任務 ENI 即予以分離和刪除。

如需增加 ENI 密度，請使用 `awsvpcTrunking` 帳戶設定。Amazon ECS 也會為容器執行個體建立並連接「中繼」網路介面。幹線網路由 Amazon ECS 全受管。當您在 Amazon ECS 叢集中終止或取消註冊您的容器執行個體時，即會刪除幹線 ENI。如需有關 `awsvpcTrunking` 帳戶設定的詳細資訊，請參閱[先決條件](container-instance-eni.md#eni-trunking-launching)。

您可以在任務定義的 `networkMode` 參數中指定 `awsvpc`。如需詳細資訊，請參閱[網路模式](task_definition_parameters.md#network_mode)。

接著，當您執行任務或建立服務時，請使用 `networkConfiguration` 參數。該參數包含一或多個用於置放任務的子網路，以及一個或多個要連接至 ENI 的安全群組。如需詳細資訊，請參閱[網路組態](service_definition_parameters.md#sd-networkconfiguration)。任務放置在與這些子網相同之可用區域中的有效 Amazon EC2 執行個體上，而指定之安全群組則與針對任務所佈建的 ENI 建立關聯。

## Linux 考量事項
<a name="linux"></a>

 使用 Linux 作業系統時，請考量下列事項。
+ 如果在 `awsvpc` 模式下使用 p5.48xlarge 執行個體，則無法在執行個體上執行超過 1 項任務。
+ 使用 `awsvpc` 網路模式的任務和服務需要 Amazon ECS 服務連結角色為 Amazon ECS 提供代表您呼叫其他 AWS 服務的許可。這個角色會在您建立叢集，或在 AWS 管理主控台中建立或更新服務時，自動為您建立。如需詳細資訊，請參閱[使用 Amazon ECS 的服務連結角色](using-service-linked-roles.md)。您也可以使用下列 AWS CLI 命令建立服務連結角色：

  ```
  aws iam [create-service-linked-role](https://docs.aws.amazon.com/cli/latest/reference/iam/create-service-linked-role.html) --aws-service-name ecs.amazonaws.com
  ```
+ 您的 Amazon EC2 Linux 執行個體需要容器代理程式的版本 `1.15.0` 或更新版本，以執行使用 `awsvpc` 網路模式的任務。如果您使用的是 Amazon ECS 最佳化 AMI，您的執行個體至少需要 `1.15.0-4` 版的 `ecs-init` 套件。
+ 在 VPC 上同時啟用 `enableDnsHostnames` 和 `enableDnsSupport` 選項時，Amazon ECS 會使用 Amazon 提供的 (內部) DNS 主機名稱填入任務的主機名稱。如果未啟用這些選項，任務的 DNS 主機名稱會設定為隨機的主機名稱。如需 VPC DNS 設定的詳細資訊，請參閱《Amazon VPC 使用者指南》中的[搭配使用 DNS 與 VPC](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-dns.html)。
+ 使用 `awsvpc` 網路模式的每個 Amazon ECS 任務都會收到自己的彈性網路介面 (ENI)，它連接到託管該任務的 Amazon EC2 執行個體。Amazon EC2 Linux 執行個體可連接的網路介面數量有預設配額。主要網路介面視為一個配額。例如，根據預設，`c5.large` 執行個體最多只有三個可與其連接的 ENI。執行個體的主要網路介面視為一個配額。您可以將額外兩個 ENI 連接到執行個體。因為每項使用 `awsvpc` 網路模式的任務都需要 ENI，所以通常只能對此執行個體類型執行兩個這類任務。如需有關每個執行個體類型的預設 ENI 限制的詳細資訊，請參閱 *Amazon EC2 User Guide* 中的 [IP addresses per network interface per instance type](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-eni.html#AvailableIpPerENI)。
+ Amazon ECS 支援使用受支援的 Amazon EC2 Linux 執行個體類型啟動加強 ENI 密度的容器執行個體。當您選擇加入 `awsvpcTrunking` 帳戶設定並使用這些執行個體類型向叢集註冊 Amazon EC2 Linux 執行個體，則這些執行個體的 ENI 配額較高。使用這些具有更高配額的執行個體代表您可以在每個 Amazon EC2 Linux 執行個體中安排更多任務。若要使用具有中繼功能的增強 ENI 密度，您的 Amazon EC2 執行個體必須使用 `1.28.1` 版或更新版本的容器代理程式。如果您使用的是 Amazon ECS 最佳化 Linux AMI，您的執行個體也至少需要 `1.28.1-2` 版的 `ecs-init` 套裝服務。如需選擇使用的 `awsvpcTrunking` 帳戶設定詳細資訊，請參閱 [透過帳戶設定使用 Amazon ECS 功能](ecs-account-settings.md)。如需 ENI 中繼的詳細資訊，請參閱[增加 Amazon ECS Linux 容器執行個體網路介面數量](container-instance-eni.md)。
+ 當在 Amazon EC2 Linux 執行個體上託管使用 `awsvpc` 網路模式的任務時，您的任務 ENI 不會提供公有 IP 位址。若要存取網際網路，必須在設定為使用 NAT 閘道的私有子網路中啟動任務。如需詳細資訊，請參閱 *《Amazon VPC 使用者指南》*中的 [NAT 閘道](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html)。入站網路存取必須出自使用私有 IP 位址的 VPC，或自 VPC 透過負載平衡器路由。從公有子網路內啟動的任務無法存取網際網路。
+ Amazon ECS 只會識別連接到您的 Amazon EC2 Linux 執行個體的 ENI。如果您將 ENI 手動連接到執行個體，Amazon ECS 可能會嘗試向沒有足夠網路介面卡的執行個體新增任務。這可能導致任務逾時並進入解除佈建狀態，然後進入已停止狀態。建議您不要將 ENI 手動連接到容器執行個體。
+ Amazon EC2 Linux 執行個體必須使用 `ecs.capability.task-eni` 註冊，用以考量來放置具 `awsvpc` 網路模式的任務。執行 `1.15.0-4` 版或更新版本 `ecs-init` 的容器執行個體使用此屬性註冊。
+ 您的帳戶無法手動分離或修改由 Amazon EC2 Linux 執行個體建立並連接的 ENI。這是為了防止意外刪除與正在執行之任務相關聯的 ENI。若要釋出任務的 ENI，請停止該任務。
+ 當執行任務或建立使用 `awsvpc` 網路模式的服務時，限制只能在 `awsVpcConfiguration` 中指定 16 個子網路和 5 個安全群組。如需詳細資訊，請參閱 *Amazon Elastic Container Service API 參考* 中的 [AwsVpcConfiguration](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_AwsVpcConfiguration.html)。
+ 當任務在 `awsvpc` 網路模式中啟動時，Amazon ECS 容器代理程式會先為每項任務建立額外的 `pause` 容器，然後在任務定義中啟動容器。接著，它會執行 `pause`amazon-ecs-cni-plugins[ CNI 外掛程式，來設定 ](https://github.com/aws/amazon-ecs-cni-plugins) 容器的網路命名空間。然後代理會啟動任務中的其他容器，讓它們共用 `pause` 容器的網路堆疊。這表示任務中的所有容器都可由 ENI 的 IP 地址定址，而且它們彼此之間可以透過 `localhost` 界面通訊。
+ 服務的任務使用 `awsvpc` 網路模式僅支援 Application Load Balancer 和 Network Load Balancer。當您為這些服務建立任何目標群組時，必須選擇 `ip` 做為目標類型。請勿選擇 `instance`。這是因為使用 `awsvpc` 網路模式的任務與 ENI 相關聯，不與 Amazon EC2 Linux 執行個體相關聯。如需詳細資訊，請參閱[使用負載平衡分佈 Amazon ECS 服務流量](service-load-balancing.md)。
+ 如果您的 VPC 已更新以變更其使用的 DHCP 選項集，則無法將這些變更套用到現有的任務。啟動套用這些變更的新任務，驗證這些任務是否正確運作，接著停止現有的任務，以便安全地變更這些網路組態。

## Windows 考量
<a name="windows"></a>

 當您使用 Windows 作業系統時，請考慮下列事項：
+ 使用 Amazon ECS 最佳化 Windows Server 2016 AMI 的容器執行個體無法託管使用 `awsvpc` 網路模式的任務。如果您的叢集包含 Amazon ECS 最佳化且支援 `awsvpc` 網路模式的 Windows Server 2016 AMI 和 Windows AMI，使用 `awsvpc` 網路模式的任務不會在 Windows 2016 Server 執行個體上啟動。但會在支援 `awsvpc` 網路模式的執行個體上啟動。
+ 您的 Amazon EC2 Windows 執行個體需要容器代理程式的版本 `1.57.1` 或更新版本，以使用採用 `awsvpc` 網路模式的 Windows 容器 CloudWatch 指標。
+ 使用 `awsvpc` 網路模式的任務和服務需要 Amazon ECS 服務連結角色為 Amazon ECS 提供代表您呼叫其他 AWS 服務的許可。這個角色會在您建立叢集，或在 AWS 管理主控台中建立或更新服務時，自動為您建立。如需詳細資訊，請參閱[使用 Amazon ECS 的服務連結角色](using-service-linked-roles.md)。您也可以使用下列 AWS CLI 命令建立服務連結角色。

  ```
  aws iam [create-service-linked-role](https://docs.aws.amazon.com/cli/latest/reference/iam/create-service-linked-role.html) --aws-service-name ecs.amazonaws.com
  ```
+ 您的 Amazon EC2 Windows 執行個體需要容器代理程式的版本 `1.54.0` 或更新版本，以執行使用 `awsvpc` 網路模式的任務。啟動執行個體時，必須設定 `awsvpc` 網路模式所需的選項。如需詳細資訊，請參閱[引導 Amazon ECS Windows 容器執行個體傳遞資料](bootstrap_windows_container_instance.md)。
+ 在 VPC 上同時啟用 `enableDnsHostnames` 和 `enableDnsSupport` 選項時，Amazon ECS 會使用 Amazon 提供的 (內部) DNS 主機名稱填入任務的主機名稱。如果未啟用這些選項，任務的 DNS 主機名稱會是隨機的主機名稱。如需 VPC DNS 設定的詳細資訊，請參閱《Amazon VPC 使用者指南》中的[搭配使用 DNS 與 VPC](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-dns.html)。
+ 每項使用 `awsvpc` 網路模式的 Amazon ECS 任務都會收到自己的彈性網路介面 (ENI)，連接到裝載該任務的 Amazon EC2 Windows 執行個體。Amazon EC2 Windows 執行個體可連接的網路介面數量有預設配額。主要網路介面視為一個配額。例如，根據預設，`c5.large` 執行個體最多只有三個可與其連接的 ENI。執行個體的主要網路介面視為一個配額。您可以將額外兩個 ENI 連接到執行個體。因為每項使用 `awsvpc` 網路模式的任務都需要 ENI，所以通常只能對此執行個體類型執行兩個這類任務。如需有關每個執行個體類型的預設 ENI 限制的詳細資訊，請參閱 *Amazon EC2 User Guide* 中的 [IP addresses per network interface per instance type](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/using-eni.html#AvailableIpPerENI)。
+ 當在 Amazon EC2 Windows 執行個體上託管使用 `awsvpc` 網路模式的任務時，您的任務 ENI 不會提供公有 IP 位址。若要存取網際網路，在設定為使用 NAT 閘道的私有子網路中啟動任務。如需詳細資訊，請參閱 *《Amazon VPC 使用者指南》*中的 [NAT 閘道](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html)。入站網路存取必須出自使用私有 IP 位址的 VPC，或自 VPC 透過負載平衡器路由。從公有子網路內啟動的任務無法存取網際網路。
+ Amazon ECS 只會識別連接到您的 Amazon EC2 Windows 執行個體的 ENI。如果您將 ENI 手動連接到執行個體，Amazon ECS 可能會嘗試向沒有足夠網路介面卡的執行個體新增任務。這可能導致任務逾時並進入解除佈建狀態，然後進入已停止狀態。建議您不要將 ENI 手動連接到容器執行個體。
+ Amazon EC2 Windows 執行個體必須使用 `ecs.capability.task-eni` 註冊，用以考量來放置具 `awsvpc` 網路模式的任務。
+  您無法手動修改或分離由 Amazon EC2 Windows 執行個體建立並連接的 ENI。這是為了防止您意外刪除與正在執行之任務相關聯的 ENI。若要釋出任務的 ENI，請停止該任務。
+  您在執行任務或建立使用 `awsvpc` 網路模式的服務時，您最多只能在 `awsVpcConfiguration` 指定 16 個子網和五個安全群組。如需詳細資訊，請參閱 *Amazon Elastic Container Service API 參考* 中的 [AwsVpcConfiguration](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_AwsVpcConfiguration.html)。
+ 當任務在 `awsvpc` 網路模式中啟動時，Amazon ECS 容器代理程式會先為每項任務建立額外的 `pause` 容器，然後在任務定義中啟動容器。接著，它會執行 `pause`amazon-ecs-cni-plugins[ CNI 外掛程式，來設定 ](https://github.com/aws/amazon-ecs-cni-plugins) 容器的網路命名空間。然後代理會啟動任務中的其他容器，讓它們共用 `pause` 容器的網路堆疊。這表示任務中的所有容器都可由 ENI 的 IP 地址定址，而且它們彼此之間可以透過 `localhost` 界面通訊。
+ 服務的任務使用 `awsvpc` 網路模式僅支援 Application Load Balancer 和 Network Load Balancer。當您為這些服務建立任何目標群組時，必須選擇 `ip` 做為目標類型，而不是選擇 `instance`。這是因為使用 `awsvpc` 網路模式的任務與 ENI 相關聯，不與 Amazon EC2 Windows 執行個體相關聯。如需詳細資訊，請參閱[使用負載平衡分佈 Amazon ECS 服務流量](service-load-balancing.md)。
+ 如果您的 VPC 已更新以變更其使用的 DHCP 選項集，則無法將這些變更套用到現有的任務。啟動套用這些變更的新任務，驗證這些任務是否正確運作，接著停止現有的任務，以便安全地變更這些網路組態。
+ 若您在 EC2 Windows 組態中使用 `awsvpc` 網路模式，則系統不支援下列項目：
  + 雙堆疊組態
  + IPv6
  + ENI 中繼

## 在雙堆疊模式下使用 VPC
<a name="task-networking-vpc-dual-stack"></a>

在雙堆疊模式中使用 VPC 時，任務可透過 IPv4 或 IPv6 或兩者進行通訊。IPv4 與 IPv6 位址彼此獨立。因此，您必須在 VPC 中為 IPv4 與 IPv6 分別配置路由與安全設定。如需如何將 VPC 設定為雙堆疊模式的詳細資訊，請參閱《Amazon VPC 使用者指南》中的[遷移至 IPv6](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-migrate-ipv6.html)。

如果您為 VPC 設定網際網路閘道或傳出限定網際網路閘道，則可以在雙堆疊模式下使用 VPC。藉此，指派 IPv6 位址的工作就能透過網際網路閘道或僅限出口的網際網路閘道存取網際網路。NAT 閘道是選用。如需詳細資訊，請參閱 *《Amazon VPC 使用者指南》* 中的[網際網路閘道](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Internet_Gateway.html)和[輸出限定網際網路閘道](https://docs.aws.amazon.com/vpc/latest/userguide/egress-only-internet-gateway.html)。

如果符合下列條件，將會為 Amazon ECS 任務指派 IPv6 地址：
+ Amazon EC2 Linux 執行個體託管的任務正在使用版本 `1.45.0` 或更新版本的容器代理程式。如需如何檢查執行個體使用之代理程式版本以及視需要進行更新的相關資訊，請參閱 [更新 Amazon ECS 容器代理程式](ecs-agent-update.md)。
+ 此 `dualStackIPv6` 帳戶設定已啟用。如需詳細資訊，請參閱[透過帳戶設定使用 Amazon ECS 功能](ecs-account-settings.md)。
+ 您的任務是使用 `awsvpc` 網路模式。
+ 您的 VPC 與子網路已針對 IPv6 進行設定。組態包含在指定子網路中建立的網路介面。如需如何將 VPC 設定為雙堆疊模式的詳細資訊，請參閱《Amazon VPC 使用者指南》中的[遷移至 IPv6](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-migrate-ipv6.html) 和[修改您子網路的公有 IPv6 定址屬性](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-ip-addressing.html#subnet-ipv6)。

# 將 Amazon ECS 容器連接埠映射至 EC2 執行個體網路介面
<a name="networking-networkmode-host"></a>

僅 Amazon EC2 執行個體上託管的 Amazon ECS 任務支援 `host` 網路模式。使用 Fargate 上的 Amazon ECS 時不支援。

`host` 網路模式是 Amazon ECS 支援的最基本網路模式。使用託管模式，容器的聯網功能會直接繫結至執行容器的基礎主機。

![\[顯示網路架構的圖表，其中包含使用託管網路模式的容器。\]](http://docs.aws.amazon.com/zh_tw/AmazonECS/latest/developerguide/images/networkmode-host.png)


假設您正在使用 Express 應用程式執行 Node.js 容器，該應用程式會接聽連接埠 `3000` (類似於上圖中所示的連接埠)。使用 `host` 網路模式時，容器會使用基礎主機 Amazon EC2 執行個體的 IP 地址在連接埠 3000 上接收流量。我們不建議使用此模式。

使用此網路模式存在重大的缺點。您不能在每台主機上執行多個任務的執行個體化。這是因為只有第一個任務可以繫結至 Amazon EC2 執行個體上所需的連接埠。使用 `host` 網路模式時，也無法重新對應容器連接埠。例如，如果應用程式需要接聽特定的連接埠號碼，則無法直接重新對應連接埠號碼。相反地，您必須透過變更應用程式組態來管理任何連接埠衝突。

使用 `host` 網路模式時也存在安全隱患。此模式允許容器模擬主機，並允許容器連線至主機上的私有迴路網路服務。

# 為 Amazon ECS Linux 任務使用 Docker 的虛擬網路
<a name="networking-networkmode-bridge"></a>

僅 Amazon EC2 執行個體上託管的 Amazon ECS 任務支援 `bridge` 網路模式。

在 `bridge` 模式下，您正在使用虛擬網路橋接器，在主機和容器的網路之間建立一個層。如此一來，您就可以建立將主機連接埠重新對應至容器連接埠的連接埠映射。映射可以是靜態或動態模式。

![\[此圖顯示使用橋接網路模式與靜態連接埠映射的網路架構。\]](http://docs.aws.amazon.com/zh_tw/AmazonECS/latest/developerguide/images/networkmode-bridge.png)


透過靜態連接埠映射，您可以明確定義要對應至容器連接埠的主機連接埠。使用上述範例，主機上的 `80` 連接埠會對應至容器上的連接埠 `3000`。若要與容器化應用程式通訊，請將流量傳送至 Amazon EC2 執行個體 IP 地址的連接埠 `80`。從容器化應用程式的角度來看，其可以看到連接埠 `3000` 上的入站流量。

如果您只想變更流量連接埠，則適用於靜態連接埠映射。但是，這仍然與使用 `host` 網路模式具有相同的缺點。您不能在每台主機上執行多個任務的執行個體化。這是因為靜態連接埠映射僅允許單一容器對應至連接埠 80。

為了解決這個問題，可以考慮使用具有動態連接埠映射的 `bridge` 網路模式，如下圖所示。

![\[此圖顯示使用橋接網路模式與動態連接埠映射的網路架構。\]](http://docs.aws.amazon.com/zh_tw/AmazonECS/latest/developerguide/images/networkmode-bridge-dynamic.png)


透過不在連接埠映射中指定主機連接埠，您可以讓 Docker 從暫時性連接埠範圍中選擇一個隨機、未使用的連接埠，並將其指派為容器的公有主機連接埠。例如，在容器上接聽連接埠 `3000` 的 Node.js 應用程式可能會被指派一個隨機的高編號連接埠，例如在 Amazon EC2 主機上的 `47760`。這樣做意味著您可以在主機上執行該容器的多個副本。此外，每個容器都可以在主機上指派自己的連接埠。容器的每個副本都會在連接埠 `3000` 上接收流量。不過，傳送流量至這些容器的用戶端會使用隨機指派的主機連接埠。

Amazon ECS 可協助您追蹤每個任務的隨機指派連接埠。其做法是自動更新負載平衡器目標群組 AWS Cloud Map 和服務探索，以取得任務 IP 地址和連接埠的清單。這樣可以更輕鬆地使用透過動態連接埠的 `bridge` 模式運作的服務。

但是，使用 `bridge` 網路模式的缺點之一是難以鎖定服務對服務通訊。由於服務可能會指派給任何隨機、未使用的連接埠，因此必須在主機之間開放廣泛的連接埠範圍。然而，建立特定規則以使特定服務只能與另一個特定服務通訊並不容易。這些服務沒有可用於安全群組聯網規則的特定連接埠。

## 為純 IPv6 的工作負載設定橋接聯網模式
<a name="networking-networkmode-bridge-ipv6-only"></a>

若要設定透過 IPv6 通訊的 `bridge` 模式，您必須更新 Docker 常駐程式設定。請按照以下設定更新 `/etc/docker/daemon.json`：

```
{
  "ipv6": true,
  "fixed-cidr-v6": "2001:db8:1::/64",
  "ip6tables": true,
  "experimental": true
}
```

更新 Docker 常駐程式設定後，您需要重新啟動常駐程式。

**注意**  
在更新並重新啟動常駐程式時，Docker 會在執行個體上啟用 IPv6 轉送功能，這可能會導致使用 Amazon Linux 2 AMI 的執行個體丟失預設路由。若要避免此問題，請使用下列命令，透過子網路的 IPv6 閘道新增預設路由。  

```
ip route add default via FE80:EC2::1 dev eth0 metric 100
```