iT邦幫忙

2022 iThome 鐵人賽

DAY 16
0

在軟體的世界裡,所有東西最後都是人眼看不到的數位訊號,這也是為什麼軟體很多知識很不容易跟領域外的人解釋,

但是,要解釋原理,還有一種很棒的方法,就是拿現實中的已經存在的概念來比喻,

那 Docker 呢?
光是講那些 Docker 的術語,例如我在 D7 - Docker 概念架構 提到了虛擬技術容器共享硬體資源 等等,對於剛接觸 Docker 的人,聽到這些詞彙完全就是一些無意義的雜訊,會很難理解為什麼需要 Docker,

我們可以用什麼來比喻 Docker 呢?讓我們來看看這幾個情境:


拍電影 vs. 虛擬技術

想像我們要自己拍一部《 斯卡羅 》(一部電視劇),

它的場景是設定在 19 世紀恆春一帶的故事,當時的建築跟風景肯定跟現在不同,因此我們需要選擇近似的場景來做拍攝,
而現實中斯卡羅的拍攝團隊為了追求逼真,甚至打造了一個外觀跟當時風格相近的小城鎮作為拍攝場景,

我們拿「拍電影」這件事來對虛擬技術做比喻,
虛擬技術是要「模擬出某個東西」的技術,我們想要就像我們想要拍攝出「看起來就像 19 世紀恆春」的畫面,雖然它們是假的,但是跟真的一樣,用來實現這件事情的就是虛擬技術。


紀錄片 vs. 最真實的執行環境

當然如果要最真實地呈現,就會是像紀錄片一樣,錄下事件的始末,因為那些就是真實發生的過程,

比喻到軟體上,當我們直接建置一個環境,同時最後這個環境要提供給客戶使用,它「就是」最後的成品,那當然測試起來是最真實的,

然而這麼做的問題,就是既耗時又花錢 (e.g. 硬體/伺服器費用)。


搭建擬真的場景 vs. 虛擬機器

像斯卡羅團隊那樣,搭建出等比例擬真的場景,也能帶來很好的效果,
並不是真的建造出可以居住的房屋或當時的地形,而是外觀上很近似的外殼或材質,
時間與人力物力的成本雖然低於真正的房屋,但也不低,

而對應到軟體,有個技術稱為「虛擬機器」(Virtual Machine aka. VM),
可以在電腦上「以軟體模擬出另一台電腦」,例如我的電腦是 Mac,如果模擬 Windows 執行程式的情況,可以在 Mac 電腦上用軟體啟動一台 Windows 的虛擬機器,這台 Windows 能擁有所有一台電腦該有的東西:硬碟、記憶體、網路等等,但都是虛擬出來的。


攝影棚 vs. Docker

而在攝影棚裡做拍攝,一來是拍攝地點可以在都市內,二來是只要把背景換掉、或是加上所謂綠幕,就能一定程度地模擬出要拍攝的場景,例如其他的室內場景、或用特效做出像是海邊的畫面,
雖然真實度有差距,但拍攝的成本能夠最低 (大概啦,以我影視外行人的理解),而且可以更快速地更改要拍攝的場景,

Docker 就像是攝影棚,既省資源、又快速,不同的攝影棚也可以共享硬體 (例如中央空調或廁所) 或軟體 (例如大樓的保全人員) 的資源,

一個 Docker Container 就像是一間攝影棚,既共享了整台電腦的硬體資源、也共享了作業系統的軟體資源。


哪種方式比較好

這樣我們可以分成三種程度:

  1. 完全真實
  2. 虛擬的硬體 (VM)
  3. 虛擬的軟體 (Docker)

這三種程度,是要根據場景去使用的,就像拍攝手法一樣,並不是絕對的好跟壞,

只不過,現在有越來越多的開發跟運行都是透過 Docker,在成本跟方便性上都有很大的好處,
而透過今天的比喻,希望讓不瞭解 Docker 的讀者,也可以稍稍理解這個技術的概念。


上一篇
D15 - NGINX-Certbot Image
下一篇
D17 - 團隊觀戰區爬蟲 v3 ft. AWS S3
系列文
其實沒有那麼難 — Docker30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言