简介

容器是现代应用程序开发的关键组成部分。它们已经成为组织计算资源以及管理应用程序部署内容的标准方式。

容器提供了离散的可重现计算环境,还提供了一种简化打包和依赖项管理的方法。从超大型多集群资产的编排到 Web 应用程序的编排,甚至测试您的工作并在您的笔记本电脑上进行概念验证,它们都是入门和构建在云端部署的软件的好方法。

本决策指南可帮助您入门并选择适合现代应用程序开发的 AWS 容器服务。

这段四分钟的摘录摘自 AWS 的 Principal Technical Account Manager,Vikram Venkataraman 在 2022 年 AWS 华盛顿特区峰会上发表的 57 分钟演讲录像。它概述了可用的 AWS 容器服务。

阅读时间

20 分钟

用途

帮助确定哪项 AWS 容器服务最适用于贵组织。

级别

新手

上次更新日期

2023 年 4 月 26 日

了解

容器已经成为将应用程序代码、配置和依赖项打包到单个构件中的事实标准,因为它们能以一致的方式部署到多个环境中。

容器是任何现代应用程序开发策略的关键部分。为了提供与容器相关的 AWS 服务的一些背景信息,右图显示了按层划分的可用 AWS 容器选项(在本视频中进行了更全面的说明)。

容量 

容量是指您要将容器部署到其中的底层计算,以及您的中央处理器(CPU)和内存要求。容量是容器将在其上运行的基础设施。关于 AWS 上容器的容量,您有两种选择:

  • Amazon Elastic Compute Cloud(AmazonEC2)允许您在自己管理的虚拟机上运行容器。
  • AWS Fargate 是用于容器的无服务器计算引擎,允许您运行容器而无需管理底层基础设施。借助 Fargate,您可以启动和扩展容器,而不必担心底层 EC2 实例。

编排

一个组织运行不止一个或几个容器,而是数千个容器,这种情况并不罕见。管理如此复杂的环境十分具有挑战性。编排服务有助于简化这些应用程序的部署和管理。AWS 提供三种编排服务:  

  • Amazon Elastic Container Service(Amazon ECS)是一项完全托管的容器编排服务,非常适合希望以简单且经济实惠的方式部署和管理容器化应用程序的组织。
  • Amazon Elastic Kubernetes Service(Amazon EKS)是一项完全托管式 Kubernetes 服务,可让您在 AWS 上运行和管理 Kubernetes 集群。
  • AWS 云端 Red Hat OpenShift 服务(ROSA)是一项完全托管式 OpenShift 服务,可让您在 AWS 上运行和管理 OpenShift 集群。对于已经在本地运行 OpenShift 的客户而言,该服务式理想选择。

预置

预置为服务编排层提供了接口。每种编排工具都有自身的复杂性。预置服务可以隐藏这种复杂性,有助于您更轻松地使用该服务。该类别中的 AWS 服务包括:

  • AWS App Runner 是一项完全托管式服务,可通过您的源代码自动构建容器映像,将容器部署到完全托管式基础设施,并根据需要对其进行扩展。
  • AWS Elastic Beanstalk 是一项完全托管式服务,可以轻松部署、管理和扩展 Web 应用程序。Elastic Beanstalk 还支持容器,为部署和扩展容器化应用程序提供完全托管式平台。
  • Amazon Lightsail 是一种简单且经济高效的方式,用于启动和管理虚拟私有服务器,还提供了对容器的支持,可让您使用 Lightsail 实例创建和部署容器化应用程序。

考虑

选择符合您的应用程序要求和操作偏好的容器服务非常重要。以下部分概述了选择容器服务以及支持工具和服务时需要考虑的一些关键标准。

  • 组织可以选择云,通过对托管服务进行标准化,将运营负担转移到 AWS,从而降低运营成本。更高的抽象级别使开发人员和运营商能够专注于自己独特的增值活动,而不是千篇一律的任务。

    使用 AWS 上的容器进行构建,会使用具有更高抽象级别的服务,将维护基础设施的运营开销转移到 AWS。

  • 通过了解您的工作负载模式,您可以更轻松地做出架构选择。这可能包括 Web 应用程序、基于 API 的微服务、事件驱动型应用程序、流式传输和消息收发、数据管道、IT 自动化等。与其他类型的计算环境相比,某些工作负载在某种计算环境中的性能更好或更经济高效。

  • 很多客户希望确保其应用程序可在其他环境中运行,并可轻松迁移或移动到该环境中。他们必须能够保留选择权,或同时在本地和云中运行应用程序。

    我们建议在软件架构和建包方面培养能力,这样您能够更轻松地在计算服务之间移植差异化业务逻辑。

    使用某些技术构建的应用程序在某些计算服务上的运行可能比其他计算服务更有效。

  • 在决定使用哪些容器服务时,贵组织的技能是一项主要因素。无论您采用什么方法,都需要对 DevOps 和站点可靠性工程师(SRE)团队进行一些投资。构建自动化管道以部署应用程序对于大多数现代应用程序开发而言很常见。

    有些选择会提高管理工作量。例如,一些组织拥有运行和管理 Kubernetes 实施的技能及资源,因为他们对强大的 SRE 团队进行了投资,以管理 Kubernetes 集群。这些团队负责处理频繁的集群升级(例如,Kubernetes 每年发布三个主要版本,并且会弃用旧版本)。

    组织规模是一项关键因素,因为规模较小的初创企业可能仅有少量 IT 员工,每位员工都要履行多种角色,而大型企业可能要在生产中同时支持数百个工作负载。 

  • 不同 AWS 容器服务可以满足部署复杂性方面的独特需求。以下是各项服务针对自身角色进行优化的方式:

    • AWS AppRunner 提供了最简单的途径,可让您在公共互联网上部署应用程序,而无需管理或自定义底层基础设施。
    • 如果您需要在不牺牲规模或功能的情况下对网络和安全配置进行更多控制,则 Amazon ECS 是一个理想选择。
    • Amazon EKS 使您能够利用 Kubernetes 技术为应用程序部署及编排提供的灵活性和控制。

选择

现在您已经了解评估容器选项所依据的标准,能够选择出哪些 AWS 容器服务可能适用于贵组织的要求。

下表突出显示了不同服务针对哪些情况进行了优化。请使用该表帮助确定最适用于您的组织和使用案例的容器服务。

容器
您何时会使用服务?
服务针对什么因素进行了优化?
相关容器服务或工具
在您希望在自托管式 AWS 虚拟机或 AWS 托管计算上运行容器时使用。
针对在 AWS 计算上运行您的容器进行了优化。
在需要能够部署和管理多达数千个容器时使用。
针对在 AWS 上部署、管理和扩展容器化应用程序进行了优化。
若您或您的团队在容器或基础设施方面没有太多经验,便可使用该服务。
针对易用性进行了优化。
在您需要能够提供容器注册表以及容器化和迁移现有应用程序的工具时使用。
经过优化,可以支持您的容器操作。
在需要运行熟悉的控制面板时使用,以确保无论基于容器的应用程序在何处运行,都能获得一致的体验。
针对运行基于容器的应用程序时的灵活性进行了优化。

使用

现在,您应该已经清楚了解每项 AWS 容器服务(以及支持的 AWS 工具和服务),以及哪一种容器服务最适合您的组织和使用案例。

为了探索如何使用每项可用的 AWS 容器服务,以及了解有关各项服务的更多信息,我们提供了探索每项服务工作原理的途径。以下部分提供了深入学习文档、操作教程和资源的链接,以帮助您入门。

  • Amazon EC2
  • Amazon Aurora

    Amazon EC2 入门

    访问全套 Amazon EC2 技术文档,包括 Linux 和 Windows 实例指南。

    探索指南 »

    Amazon Aurora

    VM Import/Export 用户指南

    了解如何将虚拟机(VM)映像从现有虚拟化环境导入 Amazon EC2,然后再将它们导出回来。

    探索指南 »

    Amazon Aurora

    使用 EC2 竞价型实例的 Amazon EC2 Auto Scaling

    学习如何使用 Amazon EC2 Auto Scaling 并通过启动模板来请求 Amazon EC2 竞价型实例,从而创建无状态、容错的工作负载。

    开始使用教程 »

    Amazon Aurora

    在 Amazon EC2 上部署 Web 应用程序

    我们将引导您使用 AWS CDK 创建 Amazon EC2 实例,并在其上部署 Web 应用程序。

    探索指南 »

  • Amazon ECR
  • Amazon DynamoDB

    什么是 Amazon Elastic Container Registry(ECR)?

     
    ECR 入门和使用指南。
     
     
    Amazon DynamoDB

    多账户和多区域架构中的 Amazon ECR
     

    探索跨越 AWS 账户和 AWS 区域的 Amazon ECR 架构的关键注意事项,以及与假设客户应用场景相关的架构的关键注意事项。

    阅读博客文章 »

    Amazon DynamoDB

    Amazon ECR Public 入门
     

    通过创建您的第一个公共存储库,并在 Amazon ECR 控制台中设置您的公共注册表设置,开始使用 Amazon ECR 公共存储库。

    探索指南 »

    Amazon DynamoDB

    使用 Amazon ECR 源和 ECS-to-CodeDeploy 部署创建管道
     

    在 AWS CodePipeline 中配置一个管道,该管道使用支持 Docker 映像的蓝绿部署来部署容器应用程序。

    开始使用教程 »

  • Amazon ECS
  • AWS Database Migration Service

    Amazon ECS 入门

    本指南将提供可用于访问 Amazon ECS 的工具简介,以及运行容器的介绍性分步程序。

    探索指南 »

    AWS Database Migration Service

    Amazon ECS 教程

    关于如何在使用 Amazon ECS 时执行常见任务(包括创建集群和 VPC)的十几个教程。

    开始使用教程 »

    AWS Database Migration Service

    Amazon ECS 的新增功能和未来展望

    了解自 Amazon ECS Anywhere 推出以来的新增功能、AWS Fargate 的新功能,以及对激动人心的 Amazon ECS 增强功能的展望。

    在此视频中了解完整案例 »

    AWS Database Migration Service

    Amazon Elastic Container Service(ECS)部署

    本指南将概述 AWS 上的 Amazon ECS 部署选项,并介绍如何使用它来管理简单的容器化应用程序。


    探索指南 »

    AWS Database Migration Service

    Amazon ECS 研讨会

    本研讨会旨在为可能不熟悉 AWS Fargate、Amazon ECS 甚至 Docker 容器工作流程的人员提供培训。

    探索研讨会 »

    AWS Database Migration Service

    在 Amazon ECS 上部署 Docker 容器

    学习如何在负载均衡器后面的 Amazon ECS 集群上运行支持 Docker 的示例应用程序,对该示例应用程序进行测试,然后删除您的资源以免产生费用。

    使用教程 »

  • Amazon EKS
  • AWS Database Migration Service

    Amazon EKS 入门
     

    了解有关 Amazon Elastic Kubernetes Service(Amazon EKS)的更多信息,Amazon EKS 是一项托管式服务,您可以使用它来运行 AWS 上的 Kubernetes,而无需安装、操作和维护您自己的 Kubernetes 控制面板或节点。

    探索指南 »

    AWS Database Migration Service

    Amazon Elastic Kubernetes Service(EKS)部署
     

    探索 AWS 上的 Amazon EKS 部署选项,了解如何使用它来管理通用容器化应用程序。

    探索指南 »

    AWS Database Migration Service

    Amazon EKS 快速入门参考部署

    我们使用快速入门参考部署指南,提供部署 Amazon Elastic Kubernetes Service(Amazon EKS)集群的分步说明。


    探索指南 »

    AWS Database Migration Service

    部署 Kubernetes 应用程序
     

    本教程将向您介绍如何将容器化应用程序部署到 Amazon Elastic Container Service for Kubernetes(Amazon EKS)托管的 Kubernetes 集群。

    使用教程 »

    AWS Database Migration Service

    Amazon EKS 研讨会
     

    用于了解 Amazon Elastic Kubernetes Service 的实践练习。


    访问研讨会 »

  • Amazon Lightsail
  • AWS Database Migration Service

    使用 Amazon Lightsail 创建、推送及
    部署容器映像

    本教程将向您介绍如何使用 Dockerfile 在本地计算机上创建容器映像。映像创建完成后,您可以将其推送到 Lightsail 容器服务以进行部署。

    开始使用教程 »

    AWS Database Migration Service

    Amazon Lightsail 资源中心


    探索 Lightsail 教程、视频和核心概念文档链接。



    访问资源中心 »

    AWS Database Migration Service

    使用 Amazon Lightsail 启动 Linux 虚拟机

    在本教程中,您将在 Amazon Lightsail 中创建一个 Amazon Linux 实例。该实例启动并运行后,您可以使用基于浏览器的 SSH 终端在 Lightsail 控制台内通过 SSH 连接它。

    开始使用教程 »

  • AWS App Runner
  • AWS Database Migration Service

    AWS App Runner 入门


    本教程将引导您配置源代码和部署、服务构建以及服务运行时系统,以将应用程序部署到 App Runner 服务。它还将介绍如何部署代码版本、更改配置和查看日志。

    使用教程 »

    AWS Database Migration Service

    AWS App Runner:只需几分钟即可实现从代码到可扩展、安全的 Web 应用程序

    探索 AWS App Runner 是如何精心设计,使您能够更轻松地将 Web 应用程序和 API 部署到云,而无需考虑它们使用哪种语言编写,即便对于之前缺乏部署和管理容器或基础设施经验的团队也能轻松使用。

    阅读博客 »

    AWS Database Migration Service

    使用 AWS App Runner 部署 Web 应用程序


    请按照以下分步说明使用 AWS App Runner 部署容器化 Web 应用程序。从源代码或容器映像开始。App Runner 自动构建和部署 Web 应用程序,并通过加密实现流量的负载平衡。

    部署您的 Web 应用程序 »

  • AWS Elastic Beanstalk
  • AWS Database Migration Service

    开始使用 Elastic Beanstalk


    本指南将引导您创建、探索、更新和删除 Elastic Beanstalk 应用程序。

    探索指南 »

    AWS Database Migration Service

    AWS Elastic Beanstalk 上的部署选项


    本指南介绍您可以使用 AWS Elastic Beanstalk 部署、管理和扩展应用程序,而无需承担管理基础设施的运营负担。

    探索指南 »

    AWS Database Migration Service

    AWS Electic Beanstalk 中级教程和示例

    这些教程面向中级用户,可能不包含注册 AWS 等基本步骤的说明。

    开始使用教程 »

  • AWS Fargate
  • Amazon Aurora

    AWS Fargate 入门

    本指南将介绍 AWS Fargate 的基础知识,您可以将该技术与 Amazon ECS 配合使用来运行容器,而无需管理 Amazon EC2 实例的服务器或集群。

    探索指南 »

    Amazon Aurora

    使用 AWS Fargate 上的 Linux 容器开始使用控制台

    通过在 Amazon ECS 支持 AWS Fargate 的区域针对您的任务使用 Fargate 启动类型,开始在 AWS Fargate 上使用 Amazon ECS。

    探索指南 »

    Amazon Aurora

    使用 AWS CLI 创建包含 Fargate Linux 任务的集群

    使用 AWS CLI 在 Amazon ECS 中设置集群、注册任务定义、运行 Linux 任务以及执行其他常见场景。 

    探索指南 »

  • ROSA
  • AWS Database Migration Service

    AWS 云端 Red Hat OpenShift 服务入门

    本指南将帮助您开始使用 AWS 云端 Red Hat OpenShift 服务。

    探索指南 »

    AWS Database Migration Service

    您为什么使用 ROSA?

    本视频将探讨您何时可以使用 Red Hat OpenShift 而不是标准 Kubernetes,并深入探索 AWS 上的 ROSA。

    观看视频 »

探索

架构图

探索 AWS 上容器的参考架构图。


探索架构图 »

白皮书

探索白皮书以帮助您入门并学习最佳实践。

探索白皮书 »

AWS 解决方案

探索经过审查的解决方案和架构指南,了解容器常见应用场景。

探索解决方案 »

此页内容对您是否有帮助?