上一篇我們提到如何用 Docker 來啟動 NGINX 服務,那我們就來聊聊 Docker 本身是什麼。
對我來說,Docker 就像是一個用「文字設定檔」來建立輕量級虛擬環境的工具。
這些文字檔(如 Dockerfile、docker-compose.yml)可以進版本控制
所有人 clone 下來之後,環境一鍵啟動,不用再手動安裝東安裝西
大家跑的環境都一樣,不再出現那種:
“可是我在 lab 上跑都沒問題啊…”
是不是很棒啊!
這個大家應該常聽到的比喻:
Image 就像是光碟,裡面裝著服務或應用程式的所有組件與設定。
本身是唯讀的(read-only),不能直接運作。
當初我聽前輩這樣講時,腦袋還是一片抽象,但後來真的發現…這比喻超貼切!
你可以把 Image 想像成:
如果 image 是光碟,那 container 就是「放入光碟機後正在運作的程式」。
Container 是根據 Image 啟動出來的執行實體。
每個 container:
常見應用像是:
現在大多數主流應用程式都已經提供官方的 container 版本,拿來用就像裝 app 一樣簡單。
如果 image 是光碟,那 repository 就像是光碟收納盒📀
Repository 是儲存 image 的地方,最常見的就是:
docker run
指令時:Docker 會先檢查你本機有沒有對應的 image
如果沒有,就會自動從 repository 拉下來
這讓部署過程變得非常簡單、快速。
項目 | 傳統 VM | Docker Container |
---|---|---|
啟動速度 | 幾分鐘 | 幾秒鐘 |
硬體資源 | 高(需要整套作業系統) | 低(共用 Host 核心) |
可攜性 | 較差 | 高(跨平台、跨環境) |
隔離性 | 高 | 高 |
管理難度 | 較高 | 低(指令/設定檔即可) |
Docker 就是: