IT 基礎知識 ch05 虛擬化與容器:一台機器變很多台
下一章→
CH 05 新手先修

虛擬化與容器:一台機器變很多台

VM 與 HypervisorImage 與範本容器 vs VMRegistryServerless 的抽象層級

「雲端」的第一塊技術地基就是虛擬化——沒有它,AWS 不可能把一台實體伺服器租給幾十個互不相識的客戶。本章從 VM 與 hypervisor 講起(EC2 的本質),再比較容器與 VM 的差異(ECS/EKS 的本質),最後把「Serverless 到底 serverless 在哪」講清楚。讀完後 AWS ch02(EC2、AMI)和 ch08(Lambda、ECS、Fargate)的定位一目瞭然。

一台實體伺服器的 CPU 和記憶體往往用不滿,而且不同客戶的程式絕不能互相干擾。虛擬化(Virtualization)解決這兩個問題:把一台實體機器切成很多台互相隔離的「虛擬機(VM,Virtual Machine)」。

  • 類比:一棟透天厝隔成多間套房。每間套房有自己的門鎖、水電表(CPU/記憶體配額)、住戶彼此看不到對方屋內;但地基、水塔、電力(實體硬體)是共用的。
  • Hypervisor = 包租公+隔間工程:跑在實體機器上的一層特殊軟體,負責「切分硬體資源、分配給各 VM、確保彼此隔離」。每台 VM 以為自己獨佔一台完整電腦,其實都是 hypervisor 演給它看的。
  • 每台 VM 裡面跑完整的作業系統(自己的 Linux 或 Windows)——所以開一台 VM 像開一台真電腦,要跑完整開機流程(分鐘級)。
💡 AWS 對應:EC2 的每個 Instance 就是一台 VM——AWS 資料中心的實體伺服器上跑著 hypervisor(AWS 自研的 Nitro),你租的是其中一間「套房」。所謂 t3.large、m5.xlarge 機型,就是套房的坪數規格(幾顆 vCPU、幾 GB 記憶體)。
  • 每次開新 VM 都要重新裝作業系統、裝軟體、調設定?太慢。解法:把一台「裝好裝滿」的機器拍快照存成範本(Image),以後開新機器直接從範本複製——像建商用樣品屋複製出整批房子。
  • Image 裡有什麼:作業系統+已安裝的軟體+設定檔。從同一個 Image 開出來的機器,出生時一模一樣。
  • 這也是「可拋棄式基礎設施」思維的基礎:機器壞了不修,砍掉從 Image 重開一台——反正一分鐘就好了。這個思維在 Auto Scaling(AWS ch03)是前提:擴展時開的每台新機器都從同一個 Image 長出來。
⭐ AWS 對應:AMI(Amazon Machine Image)就是 EC2 的 Image。考題「加速 Auto Scaling 啟動速度」→ 把軟體預先烘進 AMI(golden AMI),開機不用再現場安裝。

容器(Container)是比 VM 更輕的隔離技術,兩者差在「隔到多深」:

  • VM:隔出完整的家——每間套房自帶獨立水電、廚房、衛浴(完整作業系統)。隔離最徹底,但重:每台 VM 都要留一份 OS 的記憶體開銷、開機分鐘級。
  • 容器:共用公寓裡的上鎖房間——大家共用同一個作業系統核心(同一套水電廚房),只是各自房間上鎖、行李分開(程式、函式庫、設定打包在一起)。輕:啟動秒級、一台機器塞得下幾十上百個容器。
  • 容器解決的核心痛點是「在我電腦上明明可以跑」:把應用程式和它需要的一切(函式庫、環境設定)打包成一個容器映像(image),到哪台機器跑都一樣——開發、測試、正式環境完全一致。
  • Docker 是最流行的容器工具;映像放在Registry(映像倉庫)集中管理,要用就 pull 下來。
  • 取捨:容器共用核心,隔離不如 VM 徹底——所以雲端商讓「不同客戶」之間仍用 VM 隔,客戶「自己的多個服務」之間用容器隔。
💡 AWS 對應:ECS/EKS = 幫你管理一大群容器的服務(誰放哪台機器、掛了重啟、擴縮容),差別在 ECS 是 AWS 自家介面、EKS 是業界標準 Kubernetes;ECR = AWS 的 Registry(放容器映像的倉庫)。詳見 AWS ch08。

把「你要自己管多少事」排成一條階梯,就懂各種運算服務的定位了:

  • ① 實體機(地端機房):從電力、硬體到軟體全都自己管。
  • ② VM(EC2):硬體交給 AWS,但 OS 更新、擴縮容、修壞機還是你的事。
  • ③ 容器託管(ECS on Fargate):連「跑容器的機器」都不用管了——你給容器映像,AWS 找地方跑。Fargate 的意義就是「無伺服器的容器運算」:有容器、沒有你要管的 EC2。
  • ④ 函式即服務(Lambda):連容器都不用包,只上傳一段程式碼,事件來了 AWS 自動找機器執行、跑完就收——按執行時間計費,沒流量完全不花錢。

「Serverless 不是沒有伺服器」——伺服器當然存在,只是你看不到也不用管:不用開機器、不用更新 OS、不用煩惱擴容,AWS 全包。

⭐ 考題選型口訣:要完整控制 OS/特殊硬體 → EC2;已容器化、不想管機器 → Fargate;事件驅動的短任務(跑完就走)→ Lambda。「無需管理伺服器」「按使用付費」這些關鍵字 → Serverless 家族(詳見 AWS ch08)。
容器 vs 虛擬機
特性VM(虛擬機)容器
類比獨立套房(自帶水電廚衛)共用公寓的上鎖房間
作業系統每台 VM 一套完整 OS共用宿主機的 OS 核心
啟動速度分鐘級(完整開機)秒級
資源開銷重(每台都養一套 OS)輕(一台機器可跑上百個)
隔離程度徹底(hypervisor 層隔離)較弱(共用核心)
AWS 對應EC2(範本=AMI)ECS/EKS 管容器、ECR 放映像
運算抽象階梯:你要管多少事
層級你上傳什麼你還要管什麼AWS 服務
VM整台機器的內容OS 更新、擴縮容、換壞機EC2
容器(自管機器)容器映像跑容器的那群 EC2ECS/EKS on EC2
容器(Serverless)容器映像只管容器本身,機器 AWS 包ECS/EKS on Fargate
函式一段程式碼幾乎什麼都不管,按執行付費Lambda

練習題 點選選項查看解析

0 / 7
01 / 7
AWS 能把同一台實體伺服器同時租給多個互不相識的客戶,且彼此完全看不到對方的資料。這主要靠什麼技術?
A 防火牆規則
B 虛擬化:hypervisor 把實體機切成多台互相隔離的 VM
C 資料加密
D 每個客戶其實各分到一台實體機
解析
Hypervisor 是「包租公+隔間工程」:把實體硬體切分成多台 VM,各自以為獨佔一台電腦,實際上共用硬體但完全隔離。這是整個公有雲商業模式的技術地基——EC2 的每個 Instance 就是這樣的一台 VM(AWS 用自研的 Nitro hypervisor)。
02 / 7
你的 Auto Scaling 群組擴展太慢,因為每台新 EC2 開機後還要花 10 分鐘安裝軟體。最直接的改善方法是?
A 換更大的機型
B 把軟體預先安裝好、烘進自訂 AMI,新機器從這個 AMI 啟動就緒
C 改用更快的網路
D 增加健康檢查頻率
解析
AMI 是 EC2 的「樣品屋範本」:把裝好裝滿的機器做成 Image,之後每台新機器出生就帶著所有軟體(俗稱 golden AMI),省掉現場安裝的 10 分鐘。這是「範本思維」的典型應用,也是 SAA 的常見考點。
03 / 7
容器和 VM 最本質的差異是什麼?
A 容器比較安全
B VM 每台跑完整的作業系統,容器共用宿主機的 OS 核心——所以容器輕、啟動秒級,但隔離較弱
C 容器只能跑 Linux 程式,VM 什麼都能跑
D VM 是舊技術,容器是它的取代品
解析
記住類比:VM=獨立套房(自帶整套 OS,隔離徹底但重)、容器=共用公寓的上鎖房間(共用 OS 核心,輕、秒級啟動、一台機器塞上百個)。兩者是互補不是取代——雲端商用 VM 隔離不同客戶,客戶用容器隔離自己的服務。
04 / 7
開發團隊常抱怨「程式在我電腦上可以跑,到正式環境就掛」。容器怎麼解決這個問題?
A 容器讓程式跑得比較快
B 把應用程式連同它需要的函式庫、環境設定整個打包成映像,到任何機器上跑的環境都完全一致
C 容器會自動修復程式錯誤
D 容器強制所有人用同一台電腦開發
解析
容器映像=「程式+它需要的一切」的完整打包。開發、測試、正式環境跑的是同一個映像,環境差異從根源消失。映像放在 Registry(如 AWS 的 ECR)集中管理,部署就是 pull 下來跑。這是容器風行的最大理由。
05 / 7
「Serverless(無伺服器)」的正確理解是?
A 程式不需要伺服器就能執行
B 伺服器仍然存在,只是由 AWS 全權管理——你不用開機器、更新 OS、煩惱擴容
C 只能在瀏覽器裡執行的程式
D 一種比較便宜的 EC2
解析
Serverless 不是「沒有伺服器」,是「伺服器不關你的事」。Lambda 的程式當然跑在某台機器上,但那台機器的維運、擴容、修壞全由 AWS 包辦,你只上傳程式碼、按執行時間付費。Fargate 同理——是「無需自管伺服器的容器運算」。
06 / 7
團隊已把應用容器化,想在 AWS 上跑,但明確表示「不想管理任何 EC2 機器」。該選什麼?
A ECS on EC2
B ECS/EKS on Fargate——給容器映像,AWS 負責找機器跑
C 直接在一台大 EC2 上裝 Docker
D Lambda,因為它最省事
解析
關鍵字「容器化+不想管機器」→ Fargate(Serverless 容器運算)。ECS on EC2 還是要自己管那群跑容器的機器;Lambda 適合「事件驅動的短任務程式碼」,不是拿來跑常駐容器化應用的預設解(雖然 Lambda 也支援容器映像,但常駐服務仍以 Fargate 為正解)。
07 / 7
一個任務「每當有圖片上傳到 S3,就自動壓縮並存回」,每次執行約 3 秒,一天觸發幾百次。最符合成本效益的運算選擇是?
A 常駐一台 EC2 等著處理
B Lambda:事件觸發、跑完就收、按執行時間計費,沒事件時完全不花錢
C Fargate 上跑一個常駐容器
D 為每次上傳開一台新 EC2
解析
「事件驅動+短任務+間歇性」是 Lambda 的完美場景:S3 事件直接觸發、跑 3 秒就結束、閒置時零成本。常駐 EC2 或 Fargate 一天 24 小時計費,為了每天加總不到一小時的工作量太浪費。這是 AWS ch08 的核心選型題。

點擊卡片翻面查看答案,共 9 張。

QUESTION
虛擬化與 Hypervisor 的類比?
點擊翻面
ANSWER
一棟樓隔成多間套房
VM = 套房(以為自己獨佔整棟樓)
Hypervisor = 包租公+隔間工程(切資源、保隔離)
EC2 Instance 就是一台 VM
點擊翻回
QUESTION
Image(範本)解決什麼問題?AWS 叫什麼?
點擊翻面
ANSWER
免去每台新機器重裝軟體:拍快照存成範本,複製出生即就緒
AWS = AMI
考點:加速 Auto Scaling → 軟體烘進 golden AMI
點擊翻回
QUESTION
容器 vs VM 的類比與三大差異?
點擊翻面
ANSWER
VM = 獨立套房;容器 = 共用公寓的上鎖房間
① OS:VM 各一套 / 容器共用核心
② 啟動:分鐘級 / 秒級
③ 隔離:徹底 / 較弱
點擊翻回
QUESTION
容器解決的最大痛點?
點擊翻面
ANSWER
「在我電腦上明明可以跑」
程式+函式庫+設定打包成映像
開發/測試/正式環境完全一致
點擊翻回
QUESTION
Docker / Registry / ECR 各是什麼?
點擊翻面
ANSWER
Docker = 最流行的容器工具
Registry = 集中存放容器映像的倉庫
ECR = AWS 的 Registry(Elastic Container Registry)
點擊翻回
QUESTION
ECS 和 EKS 是什麼?差在哪?
點擊翻面
ANSWER
都是「管理一大群容器」的服務(調度、重啟、擴縮)
ECS = AWS 自家介面,簡單
EKS = 業界標準 Kubernetes,可攜性高
點擊翻回
QUESTION
Fargate 的定位一句話?
點擊翻面
ANSWER
Serverless 的容器運算
你給容器映像,AWS 負責找機器跑
有容器、沒有要自己管的 EC2
點擊翻回
QUESTION
「Serverless」的正確理解?
點擊翻面
ANSWER
不是沒有伺服器
是伺服器由 AWS 全管:不用開機、不用更新 OS、不用擴容
按使用量付費,閒置零成本(Lambda)
點擊翻回
QUESTION
運算選型口訣:EC2 / Fargate / Lambda?
點擊翻面
ANSWER
要完整控制 OS → EC2
已容器化+不想管機器 → Fargate
事件驅動短任務、間歇性 → Lambda
點擊翻回