跳到主要内容

C2-03-02-本章在整套-AWS-知识体系中的位置

本篇是《C2-03-容器Serverless与应用运行平台》的第1个分篇,主要包含:本章在整套-AWS-知识体系中的位置、719题中的粗略曝光度、容器基础与镜像、镜像仓库与编排基础。

1-本章在整套-AWS-知识体系中的位置

上一章建立的是:

Physical Server

Virtualization

Virtual Machine

Amazon EC2

这解决了:代码在哪里运行?

但是现代应用还有另一个问题:是不是每个 Application、都需要一整台 Virtual Machine?

答案是否定的。

现代 AWS Compute 可以继续向上抽象:

Physical Server

Virtual Machine

Container

Container Orchestration

Serverless Container / Serverless Function

在 AWS 中可以先建立下面这张总图:

Compute

├── Virtual Machine
│ └── Amazon EC2

├── Container
│ ├── Amazon ECR ← 存 Container Image
│ ├── Amazon ECS ← AWS 原生容器编排
│ ├── Amazon EKS ← Managed Kubernetes
│ └── AWS Fargate ← 不自己管理容器服务器

├── Serverless Function
│ └── AWS Lambda

└── Managed Application Platform
└── AWS Elastic Beanstalk

当前 CLF-C02 官方范围中明确包括:

  • Containers:Amazon ECR、Amazon ECS、Amazon EKS
  • Serverless:AWS Fargate、AWS Lambda
  • Compute:Amazon EC2、AWS Elastic Beanstalk、Amazon Lightsail、AWS Batch 等。

因此本章不是“额外的高级知识”,而是 CLF-C02 计算体系的核心组成。



2-719题中的粗略曝光度

按照本项目已经统一使用的统计口径:题干 + 所有选项、每道题同一服务最多计 1 次。

粗略得到:

服务约涉及题数
Amazon EC2175
AWS Lambda31
AWS Fargate14
Amazon ECS13
Amazon EKS7
Amazon ECR题库中几乎没有直接点名
Elastic Beanstalk16

注意:曝光次数 ≠ 正确答案次数。

例如某服务可能经常作为干扰项出现。

C2 的目的也不是在这里逐题解析,而是先把这些技术真正理解清楚。



3-★★★★★-容器基础与镜像

3.1-为什么-Virtual-Machine-之后还会出现-Container?

先看传统 VM 的方式。

假设 GlobalShop 有三个服务:Product Service、Order Service、Payment Service。

如果每个服务都使用一台 VM:

VM 1
├── Linux
├── Node.js
└── Product Service

VM 2
├── Linux
├── Java
└── Order Service

VM 3
├── Linux
├── Java
└── Payment Service

这样当然可以运行。

但是问题是:每个 VM 都需要自己的:Guest OS、System Libraries、Runtime、Application。

其中 Guest OS 本身就占用:CPU、Memory、Disk、Boot Time。

如果一台物理服务器上运行很多小服务,重复的操作系统会带来额外开销。

于是人们开始思考:

能不能不为每一个应用都准备一整套 Guest OS,而只隔离“应用 + 它需要的运行环境”?

这就是 Container 思想的重要来源之一。


3.2-★★★★★-Container

Container。

中文通常翻译为:容器。

在软件运行环境里,它不是现实中的运输集装箱。

可以先理解成:

一个相对隔离的应用运行环境,把应用程序及其依赖打包在一起运行。

概念上:

Host OS

├── Container A
│ ├── Node.js
│ └── Product Service

├── Container B
│ ├── Java Runtime
│ └── Order Service

└── Container C
├── Python
└── Recommendation Service

与 VM 最大的学习层面区别是:

VM
通常包含完整 Guest OS

Container
通常共享 Host OS Kernel,
主要隔离应用进程、文件系统、网络等运行环境

CLF-C02 不要求深入研究:Linux Namespace、cgroups、OverlayFS、Container Runtime Interface。

但必须理解:

VM
隔离粒度更像“一台机器”

Container
隔离粒度更像“一个应用运行单元”

3.3-为什么叫-Container?

这个名字可以用现实世界的集装箱帮助理解。

传统运输:货物形状不同、包装方式不同、搬运方式不同。

集装箱出现以后:

货物

装进标准 Container

轮船 / 火车 / 卡车
都围绕标准 Container 搬运

软件中的 Container 也有类似思想:

Application
+
Runtime
+
Libraries
+
Configuration

Container Image

在不同 Container Runtime 上运行

重点不是

Container 真的等于运输集装箱。

而是

通过相对标准化的打包与运行方式,让应用更容易从开发环境移动到测试和生产环境。


3.4-VM-与-Container-的核心区别

先看 VM:

Physical Server


Hypervisor

┌────┼────┐
▼ ▼ ▼
VM1 VM2 VM3
│ │ │
OS OS OS
│ │ │
App App App

再看 Container:

Physical / Virtual Server


Host OS


Container Runtime

┌──────┼──────┐
▼ ▼ ▼
Container Container Container
App App App

学习层面可以先记:

对比Virtual MachineContainer
隔离单位一台虚拟机器一个应用运行环境
OS通常每个 VM 有 Guest OS通常共享 Host Kernel
启动相对更重通常更快、更轻
打包VM Image / AMIContainer Image
常见 AWSEC2ECS / EKS / Fargate
控制能力很高更面向应用

但不能理解成:Container 永远比 VM 好。

它们解决的是不同层级的问题。

很多生产架构本身就是:

EC2

Container

即:Container 最终仍然运行在某种 Compute 上。


3.5-★★★★-Docker

Docker。

不是 AWS 服务。

它是现代 Container 生态中非常重要的一套容器构建与运行工具。

学习 AWS 时经常看到:Docker Image、Docker Container、Dockerfile、docker build、docker push、docker pull。

CLF-C02 不要求会写 Dockerfile。

但需要知道:

Developer

│ build

Container Image

│ push

Container Registry

│ pull

ECS / EKS / Fargate


Running Container

AWS 题目如果写:Docker workload、containerized application、container image。

就应该立即想到:ECR、ECS、EKS、Fargate,而不是先想到 RDS、S3、Athena。


3.6-★★★★★-Container-Image

Container Image,中文为:容器镜像。

它可以理解为:

用来创建 Container 的只读应用模板。

例如 GlobalShop 的商品服务镜像:

globalshop/product-service:2026-09

包含:
Node.js Runtime
Application Code
Dependencies
Configuration Template

然后可以从同一份 Image 启动很多 Container:

Product Image

├── Container #1
├── Container #2
├── Container #3
└── Container #4

这与上一章的 AMI 有一点类似:

AMI

EC2 Instance

Container Image

Container

但二者不是同一个东西。


3.7-AMI-vs-Container-Image

对比AMIContainer Image
主要创建对象EC2 InstanceContainer
抽象层Machine / VMApplication
通常是否包含完整 OS更接近完整机器环境通常只包含应用所需用户空间
典型服务EC2ECS / EKS / Fargate
重点问题“服务器应该长什么样”“应用运行包应该长什么样”

可以这样记:

AMI
= Server Template

Container Image
= Application Runtime Package


4-★★★★★-镜像仓库与编排基础

4.1-Registry-是什么?

Registry,中文为:镜像注册表 / 镜像仓库服务。

开发者构建 Container Image 以后,需要一个地方存放。

不能只放在开发者电脑:

Developer Laptop
X
Production Cluster

更合理的是:

Developer

│ push

Image Registry

│ pull

Production

常见公共技术中有 Docker Hub。

AWS 自己提供:Amazon ECR。


4.2-★★★★-Amazon-ECR

[CURRENT-IN-SCOPE]。

正式名称:Amazon Elastic Container Registry。

简称:Amazon ECR。

中文可以理解为:Amazon 弹性容器镜像注册表。

名称拆解:

Elastic
弹性

Container
容器

Registry
注册表 / 镜像仓库

4.3-ECR-为什么存在?

如果 GlobalShop 有几十个微服务:product-service、order-service、payment-service、inventory-service、search-service、recommend-service。

每个服务都有多个版本:v21、v22、v23、...。

需要统一保存:Container Images。

ECR 就负责这一层:

Source Code


Build Image


Amazon ECR

├── product-service:v23
├── order-service:v41
└── payment-service:v18

然后 ECS / EKS 可以拉取这些 Image 来运行。


4.4-ECR-不负责运行-Container

这是一个非常重要的区分。

ECR
= 存 Image

ECS / EKS
= 编排 Container

Fargate / EC2
= 提供运行 Container 的 Compute

错误理解:

ECR
= 容器服务器

不对。

ECR 更像:Container Image Warehouse,而不是应用执行平台。


4.5-为什么需要-Container-Orchestration?

在开发机上运行一个 Container 很简单:docker run。

但是生产系统可能有:500 个 Product Container、300 个 Order Container、100 个 Payment Container这时问题变成:Container 放在哪台机器?

某台机器满了怎么办?

Container 挂了怎么办?

需要增加多少副本?

新版本怎么发布?

如何健康检查?

如何把网络流量送到正确 Container?

这些问题统称为:

Container Orchestration Orchestration。

原意:编排 / 协调。

就像乐团不是只有一件乐器,而是需要统一协调很多乐器。

Container Orchestration:

很多 Container
+
很多 Compute Node
+
Scheduling
+
Scaling
+
Health
+
Deployment
+
Networking

由一个系统统一协调。

AWS 中最重要的两个方向:Amazon ECS、Amazon EKS。


返回本章总述查看本章概述