大家好,今天我們要來介紹Docker,在介紹Docker之前我們要先來介紹VM
VM是甚麼?VM是虛擬機器(virtual machine)的簡稱,就是在電腦內模擬建立一部電腦,將基礎硬體虛擬化,每個虛擬機器都會提供虛擬的硬體,包括 CPU、記憶體、硬碟,方便讓作業系統 (OS) 執行個體可在硬體上執行。每部 VM 都可執行 OS,並且都可以使用這些虛擬化的硬體資源。
VM的優點不少,你可以在相同一台電腦上使用VM,來執行不同作業系統的能力、提高實體資源的使用效率與成本效益,以及加快伺服器佈建速度。另一方面,但是因為VM只將硬體虛擬化,還是要在VM執行時包含 OS 映像、程式庫、應用程式等等,因此檔案可能會變得相當龐大。
說了這麼多,這些和Docker有甚麼關係呢?
因為虛擬機器過於完整、龐大,有時候我們只是想要架設簡單的服務,這時候我們就可以使用Container這門「容器化」的技術,Container彌補了VM的這些缺點,使虛擬機器有輕量化的優點。Container容器化技術簡單來說就是,將最底層的主機 OS 虛擬化,共用主機 OS,因此不需要將 OS 開機或載入程式庫,只要 OS 相同就可以多個 Container 一起共用一個 OS,導致變的相對較輕量,相對的負荷也較低
經過上面的介紹,可以知道Docker是一項容器化的技術,透過 Container將任何程式打包成可獨立執行的映像檔,發布到任何可執行 Docker 的平臺上執行,如此一來,應用程式等於是可以透過 Docker映象檔或甚至只需要 Dockerfile,就能將程式執行環境帶著走,甚至能夠佈置上雲端。
要進入Docker 的世界裡,首先我們有三個主要的東西要認識:
「Image」 包裝了一個服務執行,環境所需要的資源,如同上面所說可以任何程式打包成可獨立執行的映像檔,打包帶走。
所以前兩天我們在安裝redis的時候,其實就是下載Docker平台上,人家「倉庫」中已經打包好上傳到平台上的一個服務,我們直接把image下載下來
然後檢查image的列表
然後在電腦上把這個image裡的「container」啟動起來
接下來我要分享把前面簡單flask的例子也打包成image,並且在docker上run起來