

# 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` | 是 | 否 | 任务使用 Linux 上的 Docker 内置虚拟网络，该网络在托管任务的每个 Amazon EC2 实例内运行。Linux 上的内置虚拟网络使用 `bridge` Docker 网络驱动程序。如果未在任务定义中指定网络模式，则这是 Linux 上的默认网络模式。 | 
| `host` | 是 | 否 | 任务通过直接映射容器端口到托管任务的 Amazon EC2 实例的 ENI，使用会绕过 Docker 内置虚拟网络的主机网络。动态端口映射不可在此网络模式中使用。使用此模式的任务定义中的容器必须指定具体的 `hostPort` 号。主机上的端口号不可被用于多个任务。因此，您不可以在单个 Amazon EC2 实例上运行相同任务定义的多个任务。 | 
| `none` | 是 | 否 | 任务没有外部网络连接。 | 
| `default` | 否 | 是 | 任务使用 Windows 上的 Docker 内置虚拟网络，该网络在托管任务的每个 Amazon EC2 实例内运行。Windows 上的内置虚拟网络使用 `nat` Docker 网络驱动程序。如果未在任务定义中指定网络模式，则这是 Windows 上的默认网络模式。 | 

有关 Linux 上的 Docker 联网的更多信息，请参阅 *Docker 文档*中的[联网概述](https://docs.docker.com/engine/network/)。

有关 Windows 上的 Docker 联网的更多信息，请参阅 Microsoft *Windows 上的容器文档*中的 [Windows 容器联网](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 和子网，您必须向 VPC 添加 IPv6 CIDR 数据块，并创建仅包含 IPv6 CIDR 数据块的新子网。有关更多信息，请参阅《Amazon VPC 用户指南》**中的[为 VPC 添加 IPv6 支持](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-migrate-ipv6-add.html)和[创建子网](https://docs.aws.amazon.com/vpc/latest/userguide/create-subnets.html)。

您还必须使用 IPv6 目标更新路由表，并为安全组配置 IPv6 规则。有关更多信息，请参阅《Amazon VPC 用户指南》**中的[配置路由表](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Route_Tables.html)和[配置安全组规则](https://docs.aws.amazon.com/vpc/latest/userguide/working-with-security-group-rules.html)。

请注意以下事项：
+ 您可以通过直接更新服务以使用仅 IPv6 子网，或者创建仅 IPv6 并行服务并使用 Amazon ECS 蓝绿部署将流量转移到新服务，来将仅 IPv4 或双堆栈 Amazon ECS 服务更新为仅 IPv6 配置。有关 Amazon ECS 蓝绿部署的更多信息，请参阅[Amazon ECS 蓝/绿部署](deployment-type-blue-green.md)。
+ 仅 IPv6 Amazon ECS 服务必须使用带有 IPv6 目标组的双堆栈负载均衡器。如果您要迁移位于应用程序负载均衡器或网络负载均衡器后面的现有 Amazon ECS 服务，则可以创建新的双堆栈负载均衡器并转移来自旧负载均衡器的流量，或者更新现有负载均衡器的 IP 地址类型。

  有关网络负载均衡器的更多信息，请参阅《网络负载均衡器用户指南》**中的[创建网络负载均衡器](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/create-network-load-balancer.html)和[更新网络负载均衡器的 IP 地址类型](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/load-balancer-ip-address-type.html)。有关应用程序负载均衡器的更多信息，请参阅《应用程序负载均衡器用户指南》**中的[创建应用程序负载均衡器](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/create-application-load-balancer.html)和[更新应用程序负载均衡器的 IP 地址类型](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-ip-address-type.html)。
+ Windows 不支持仅 IPv6 配置。您必须使用经 Amazon ECS 优化的 Linux AMI 才能在仅 IPv6 配置中运行任务。有关经 Amazon ECS 优化的 Linux 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 命令参考》**中的 [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 用户指南》**中的[通过 IPv6 发出请求入门](https://docs.aws.amazon.com/AmazonECR/latest/userguide/ecr-requests.html#ipv6-access-getting-started)。
**注意**  
Amazon ECR 不支持仅 IPv6 配置中的任务可使用的双堆栈接口 VPC 端点。有关更多信息，请参阅《Amazon Elastic Container Registry 用户指南》**中的[通过 IPv6 发出请求入门](https://docs.aws.amazon.com/AmazonECR/latest/userguide/ecr-requests.html#ipv6-access-getting-started)。
+ 仅 IPv6 配置不支持 Amazon ECS Exec。

### 支持 Amazon ECS 仅 IPv6 模式的 AWS 区域
<a name="networking-ipv6-only-regions"></a>

在 Amazon ECS 可用的以下 AWS 区域，您可以在仅 IPv6 配置中运行任务：
+ 美国东部（俄亥俄州）
+ 美国东部（弗吉尼亚州北部）
+ 美国西部（北加利福尼亚）
+ 美国西部（俄勒冈州）
+ 非洲（开普敦）
+ 亚太地区（香港）
+ 亚太地区（海得拉巴）
+ 亚太地区（雅加达）
+ 亚太地区（墨尔本）
+ 亚太地区（孟买）
+ 亚太地区（大阪）
+ 亚太地区（首尔）
+ 亚太地区（新加坡）
+ 亚太地区（悉尼）
+ 亚太地区（东京）
+ 加拿大（中部）
+ 加拿大西部（卡尔加里）
+ 中国（北京）
+ 中国（宁夏）
+ 欧洲地区（法兰克福）
+ 欧洲地区（伦敦）
+ 欧洲地区（米兰）
+ 欧洲地区（巴黎）
+ 欧洲（西班牙）
+ 以色列（特拉维夫）
+ 中东（巴林）
+ 中东（阿联酋）：
+ 南美洲（圣保罗）
+ AWS GovCloud（美国东部）
+ AWS GovCloud（美国西部）