Docker 與虛擬主機不同

Docker 運行應用程式的環境被稱作 容器 (container) 。它不像虛擬機器 (virtual machine) 一樣需要 虛擬機器監視器 (hypervisor) 模擬出軟體、韌體或硬體,反而直接運行在宿主機(host machine)的核心。以執行應用程式的運行來說,虛擬機器需要模擬出整套作業系統才能運行應用程式,而應用程式容器則是直接運行在宿主機上。不僅如此,宿主機也可以是虛擬機器。因此,它比虛擬機器又更為輕量級、執行啟動又更快。

Docker 簡介

Docker 是個管理容器(container)的服務,提供**「應用層級」的虛擬化技術**(不同於OS層級虛擬化的虛擬機)。藉由 Linux 內核的 cgroup、namespace,以及 UnionFS 等技術,來達到應用程式的資源限制與封裝隔離。

換句話說,容器不像虛擬機要在 Host OS 上再安裝 Guest OS,而可以直接共用底層 Host OS 的資源,同時具備其應用程式沙盒的隔離性(不受 Host OS 與其他容器的影響)。而 Docker 就是幫我們達到這項技術的服務,於是我們得以遠離直接操作底層的辛苦活兒。

虛擬機 vs Docker 圖:

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/fa5ca630-4e62-4ca7-bd1a-674d28ad2de4/Untitled.png

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/cae52019-e79c-4440-bf46-4e4cca34a0de/pngfind.com-dockers-logo-png-3851955.png

為何要 Docker

相較於虛擬機,Docker的優勢:

  1. 不須啟動/執行完整 OS
  2. Docker Image 提供應用所需的完整執行條件(除了內核資源以外)
  3. Dockerfile 記錄 image 構建的完整資訊