容器和虛擬機器的對決

“Without requirements or design, programming is the art of adding bugs to an empty text file.” - Louis Srygley

也許你會想到說: 「嘿~這還不容易,把環境架在虛擬機器(Virtual Machine)就好了呀!」

的確,但容器化技術以另一種輕鬆的方式解決。且容我從這兩張架構圖娓娓道來:

Infrastructure這一層可以是你的電腦主機或是雲端Server,好比Amazon的EC2,撐起運算儲存的功能。 Operating System像是Mac OS, Windows, CentOS等。Host OS是實際存在的作業系統,而我們在Host OS上運行VM所開的虛擬作業系統就是Guest OS。 Hypervisor簡單來說就是運行虛擬OS的VM,像是HyperKit, VMWARE...等。 看到Guest OS他長得非常的“肥大”,這也是VM技術常讓人詬病的原因之一。因為Guest OS是透過Host OS去虛擬出來並且受到Host Machine的限制,開越多台VM造成越來越差的performance。 容器化技術漂亮地在這場對決拿下一勝,靠的是夠輕巧、夠快速、Scale的能力更強(你一次開幾台Virtual Machine,但是透過Docker可以一次開幾百個Container)。 下一篇,我們將會介紹容器(Container)。

嚴格說起來VM和Container運用的情境不太一樣,由於這個主題往下延伸又是一本新的gitbook,於是故事打到這裡為止,繼續回到Docker,若對於VM及Container想要有更多認識:可以參閱 Containers vs VMs: Which is better in the Data Center?

Last updated