AWS 容器简介

2025-05-27

AWS 容器简介

容器化是一种虚拟化方法,用于部署和运行分布式应用程序,无需为每个应用程序启动整个虚拟机。容器化正在改变企业在云环境中开发和部署应用程序的方式。容器将应用程序分解为易于管理的小包,其中包含应用程序运行所需的所有内容:代码、核心数据、配置文件、接口和依赖项。

容器方法使开发人员能够专注于应用程序,而无需担心部署和基础设施管理。从开发角度来看,容器方法有很多好处。

加速开发流程,包括测试和调试。
促进持续集成 (CI) 和持续部署 (CD)工作流,并在提交新的代码修订时自动重建。

容器在台式机或笔记本电脑上本地运行,并可轻松直接上传至云端。
将代码从开发系统迁移到测试系统再到生产系统,始终获得一致的结果。

无需为每个操作系统和云平台重写代码,轻松将容器从一个云提供商迁移到另一个云提供商。
容器的优势远不止于开发周期。容器无需虚拟机管理程序,从而更高效地利用计算资源。

它们只是共享操作系统内核,而不会影响容器内运行应用程序的性能。由于占用空间更小,单个主机上可以运行更多容器,从而提高计算资源的利用率并降低成本。

此外,容器可以仅配置所需的二进制文件和组件,从而消除了完整操作系统中可能存在的潜在漏洞。与按需
实例相比,在 Amazon EC2 Spot 实例上运行的容器可享受高达 90% 的折扣。

图像

我的背景:我是云、DevOps 和大数据爱好者 | 4x AWS 认证 | 3x OCI 认证 | 3x Azure 认证。

AWS 简介系列包含不同的文章,提供不同 AWS 主题/类别的基本介绍。每篇文章都涵盖了如何使用特定主题/类别的详细指南。本系列旨在提供“不同 AWS 主题/类别的入门指南”。

在 AWS 上运行容器化工作负载的方法有很多种这篇博文比较了在 AWS 上运行 Docker 的三种最重要的方法:

1.)Amazon Elastic Container Service (ECS) 与 AWS Fargate

2.)适用于 Kubernetes 的 Amazon Elastic Container Service(EKS)

3.)AWS Elastic Beanstalk(EB)与单容器 Docker

替代文本

ECS 与 Fargate

首先,我们来了解一下 ECS,它是一款完全托管的容器编排服务。ECS是 AWS 提供的专有免费解决方案。值得一提的是,ECS 与 AWS 基础设施高度集成。例如,容器是 VPC 的一等公民,拥有网络接口 (ENI) 和安全组。

ECS通过负载均衡器或 DNS(云地图)提供服务发现。

除此之外,ECS 是运行 Docker 容器而无需在 AWS 上运行 EC2 实例的唯一选择。Fargate 是 ECS 的计算引擎。所有诸如扩展EC2实例和容器数量、在不影响容器的情况下对 EC2 实例进行更新等繁重工作都已消失。

ECS 是免费的。Fargate根据分配给容器的 CPU 和内存按秒计费。一个拥有 1 个 vCPU 和 4 GB 内存的容器每月费用约为 30 美元。

请记住 Fargate 的以下限制:

仅限通用计算容量。Fargate 目前不支持 GPU、CPU/内存优化配置。
不支持开箱即用的持久卷(例如 Docker 卷驱动程序)。
预留容量不提供折扣。

EKS(Kubernetes)

在 AWS 上运行 Docker 容器的第二个选项是 Kubernetes (K8s)。总而言之,K8s 是一个开源容器编排解决方案。AWS 提供 K8s 主控层作为服务。主控层负责存储容器集群的状态,并决定将新容器放置在哪些机器上。除此之外,您还需要管理用于运行容器的 EC2 实例队列。

K8s 的主要卖点是:它是开源的,可以在 AWS、Azure、Google Cloud、本地甚至你的本地机器上运行。然而, Kubernetes 的缺点是它与 AWS 基础设施的集成度不够高。

Kubernetes 专为微服务架构而设计。例如,内置的服务发现功能允许容器使用本地代理轻松地相互通信。

EKS 主层每月费用约为 144 美元。此外,您还需要为支持容器的 EC2 实例付费。t3.medium 实例提供 2 个 CPU 和 4 GiB 内存,每月费用约为 30 美元。

您不应低估 EKS 和 EC2 的运维复杂性。例如,EKS 与 VPC 集成的方式存在一些意想不到的限制(更多详情,请参阅 EKS 与 ECS:在 AWS 上编排容器)。

弹性豆茎

在 AWS 上运行 Docker 容器的另一种选择是 Elastic Beanstalk。有人说 Elastic Beanstalk 是 AWS 提供的 PaaS(平台即服务)。然而,Elastic Beanstalk 非常易于使用。有很多环境可以使用 Elastic Beanstalk 部署 Web 应用程序。其中一种环境称为单容器 Docker。此环境将单个 Docker 容器部署到一个或多个 EC2 实例。

Elastic Beanstalk 不仅部署您的应用程序,还会创建所需的基础架构,包括数据库、负载均衡器和 EC2 实例。需要注意的是:Elastic Beanstalk 会自动创建 EC2 实例。但您仍然需要对这些虚拟机负责,因为它们并非完全由 AWS 管理。

Elastic Beanstalk 是 AWS 提供的专有免费解决方案。您只需为底层基础设施付费。例如,t3.medium 实例提供 2 个 CPU 和 4 GiB 内存,每月费用约为 30 美元。

图像

何时 Elastic Beanstalk 是管理 AWS 上的 Docker 容器的最佳方法?

对于刚接触 AWS 或容器化概念、刚开始使用 Docker 或开发新应用程序的企业来说,Elastic Beanstalk 可能是支持 Docker 容器的最佳方法。Elastic Beanstalk 提供简单的界面,允许从公共或私有镜像仓库拉取 Docker 镜像,并协调将多个 Docker 容器部署到 Amazon ECS 集群。Elastic Beanstalk 限制了您对应用程序扩展和容量的控制,但使在 AWS 上部署 Docker 容器变得非常简单。

何时弹性容器服务是管理 AWS 上的 Docker 容器的最佳方法?

与 Elastic Beanstalk 相比,Elastic Container Service 对应用程序架构和 Docker 容器编排提供了更强大的控制力。您可以指定集群节点的大小和数量,并确定是否使用自动伸缩功能。

Elastic Container Service 使用任务来启动 Docker 容器。任务包含容器定义,能够将容器分组,使其同时启动和终止。ECS 在调度以及 CPU 和内存利用率方面提供了显著更高的灵活性和可定制性。此外,ECS 无需进行特殊集成即可与许多其他 AWS 服务协同工作。

当您需要运行需要与其他 AWS 服务集成的微服务,或使用自定义或托管调度程序在 EC2 按需实例、预留实例或 Spot 实例上运行批量工作负载时,弹性容器服务 (ECS) 是理想之选。如果您希望将旧代码容器化并迁移到 AWS,而无需重写代码,则应选择 ECS 选项。对于由在不同平台上运行或访问广泛分布的数据源的松散耦合分布式服务组成的应用程序或工作流,弹性容器服务 (ECS) 也能为您带来益处。

何时弹性 Kubernetes 服务是管理 AWS 上的 Docker 容器的最佳方法?

如果您希望灵活地与开源 Kubernetes 社区进行外部集成,那么花费额外的精力来设置 EKS 可能是更好的选择。Kubernetes 是传统工作负载的首选。它允许您在本地构建开发/测试/生产环境,然后在需要时将其迁移到云端。Kubernetes 以其真正的企业级集群和容器管理而闻名。当您的容器化工作负载开始扩展时,它非常有价值。如果您已经在 Kubernetes 上运行工作负载,那么 EKS 将是迁移到 AWS 环境的一条熟悉且简单的途径。

图像

希望本指南能帮助您了解 AWS 上的容器,欢迎在LinkedIn 上与我联系。
您可以在这里查看我的徽章
如果您有兴趣了解更多关于 AWS 的信息,请在GitHub 上关注我。
如果您喜欢本文,请点赞并分享。谢谢。

文章来源:https://dev.to/cloudtech/introduction-to-containers-with-aws-og4
PREV
公开学习:Python 中的数据结构和算法
NEXT
作为一名开发者,内容创作如何改变了我的生活