

# 经 Amazon ECS 优化的 Bottlerocket AMI
<a name="ecs-bottlerocket"></a>

Bottlerocket 是一个基于 Linux 的开源操作系统，由 AWS 专门为在虚拟机或裸机主机上运行容器而打造。经 Amazon ECS Bottlerocket 优化的 AMI 安全，只包含运行容器所需的最少软件包数量。此项可以提高资源使用率，减少安全攻击面，并有助于降低管理开销。Bottlerocket AMI 还与 Amazon ECS 集成，以帮助减少更新集群中的容器实例所涉及的操作开销。

Bottlerocket 与 Amazon Linux 存在以下差异：
+ Bottlerocket 不包括包管理器，其软件只能作为容器运行。对 Bottlerocket 的更新既可以应用，也可以通过一个步骤进行回滚，这样可以降低出现更新错误的可能性。
+ 管理 Bottlerocket 主机的主要机制是使用容器调度器。与 Amazon Linux 不同，登录单个 Bottlerocket 实例的操作并不频繁，仅用于高级调试和故障排除目的。

有关 Bottlerocket 的更多信息，请参阅 GitHub 上的[文档](https://github.com/bottlerocket-os/bottlerocket/blob/develop/README.md)和[发布](https://github.com/bottlerocket-os/bottlerocket/releases)。

适用于内核 6.1 和内核 5.10 的经 Amazon ECS 优化的 Bottlerocket AMI 有多个变体。

以下变体使用内核 6.1：
+ `aws-ecs-2`
+ `aws-ecs-2-nvidia`

以下变体使用内核 5.10：
+ `aws-ecs-1`
+ `aws-ecs-1-nvidia`

  有关 `aws-ecs-1-nvidia` 变体的更多信息，请参阅[宣布对 Amazon ECS 上的 Bottlerocket 提供 NVIDIA GPU 支持](https://aws.amazon.com/blogs/containers/announcing-nvidia-gpu-support-for-bottlerocket-on-amazon-ecs/)。

## 注意事项
<a name="ecs-bottlerocket-considerations"></a>

将 Bottlerocket AMI 与 Amazon ECS 结合使用时，请考虑以下因素。
+ Bottlerocket 支持采用 `x86_64` 和 `arm64` 处理器的 Amazon EC2 实例。Bottlerocket 不建议将 Amazon EC2 实例与 Inferentia 芯片一起使用。
+ Bottlerocket 映像不附带 SSH 服务器或 Shell。但是，您可以使用带外管理工具获得 SSH 管理员访问权限并执行引导程序。

   有关更多信息，请参阅 GitHub 上的 [bottlerocket README.md](https://github.com/bottlerocket-os/bottlerocket)：
  + [Exploration (探索)](https://github.com/bottlerocket-os/bottlerocket#exploration)
  + [管理员容器](https://github.com/bottlerocket-os/bottlerocket#admin-container)
+ 预设情况下，Bottlerocket 启用了一个[控制容器](https://github.com/bottlerocket-os/bottlerocket-control-container)。该容器运行 [AWS Systems Manager 代理](https://github.com/aws/amazon-ssm-agent)，您可以用它在 Amazon EC2 Bottlerocket 实例上运行命令或启动 shell 会话。有关更多信息，请参阅 *AWS Systems Manager 用户指南*中的[设置会话管理器](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-getting-started.html)。
+ Bottlerocket 针对容器工作负载进行了优化，并专注于安全性。Bottlerocket 不包含软件包管理器，并且不可变。

  有关安全功能和指南的信息，请参阅 GitHub 上的[安全功能](https://github.com/bottlerocket-os/bottlerocket/blob/develop/SECURITY_FEATURES.md)和[安全指南](https://github.com/bottlerocket-os/bottlerocket/blob/develop/SECURITY_GUIDANCE.md)。
+ Bottlerocket AMI 版本 `1.1.0` 或更高版本支持 `awsvpc` 网络模式。
+ Bottlerocket AMI 版本 `1.15.0` 或更高版本支持任务定义中的 App Mesh。
+ Bottlerocket AMI 版本 `1.19.0` 或更高版本支持 `initProcessEnabled` 任务定义参数。
+ Bottlerocket AMI 也不支持以下服务和功能：
  + ECS Anywhere
  + Service Connect
  + Amazon EFS 处于加密模式
  + Amazon EFS 处于 `awsvpc` 网络模式
  + 无法装载 Amazon EBS 卷
  + Elastic Inference 加速器