Docker - 基本概念
簡述 Docker 架構、優勢、好處並與 VM 作比較
建立環境
建立一個 Web Service 的環境
可能需要 Linux + Apache + MySQL + PHP (LAMP)
又或者再加上 Nginx 組成 LNAMP
使用 VM
一個環境就是一個完整的系統
在獨立開發的時候,或許這個情況並不會造成困擾
但是在團隊開發的時候,如果每個人都需要一個可以開發的環境
- 整個團隊共用一個環境 => 每個開發者互相影響
- 每個人有獨立的開發環境 => 很難確保每個人都有相同的環境
使用 Docker
Docker 不需要自己的系統,Docker 的架構是建立在原有的系統上,使用原有系統的運算資源,只安裝需要的東西,相比基於硬體上的系統建立,Docker 建立的系統只是一個程式而已
所以 Docker 具有快速建立、轉移、複製的特性
不過即便透過 namespace 隔離,但因為與原系統共用 kernel,所以 Docker 也不像 VM 是完全隔離的系統
資源分配及建立限制
VM
- 虛擬化硬體資源,執行自己的作業系統
- 可以建立任何環境, Linux 、 MAC OS 或是 Windows
Docker
- Docker 使用原系統的 kernel 作為運算,不需要執行自己的作業系統
- 只能建立相同 kernel 的環境使用
Docker 帶來的優勢
快速建立相同環境
當環境建立好之後( image 、 Dockerfile )可以在不同的機器直接部署、安裝
快速調整環境
只需要調整 image 或 Dockerfile 就可完成環境的變更
節省資源提升效能
不需要運行額外的作業系統,直接使用原本 kernel ,將資源更有效率的運用