Docker fundamentals與install
在開始實際操作之前,我們needs先花一點時間建立正確 「容器化世界觀」。理解了 Docker 為了解決什麼問題而生,你在後續 學習中就會更有方向感。
為什麼traditional部署方式會出問題?
想像一下,你是一位廚師,開發了一道全新 料理。你在自己 廚房(development environment)中完美地完成了這道菜,但當你要把這道菜帶到朋友家(生產環境)去展示時,你發現:
- 朋友家 爐子跟你家 品牌不同(作業系統差異)
- 他 鍋子尺寸不對(套件版本不同)
- 缺少了你needs 某種調味料(系統依賴缺失)
- 他 廚房擺設完全不一樣(環境變數與設定檔不同)
結果就是:你在家完美 料理,在朋友家完全做不出來。這就是軟體開發中最經典 噩夢:「Works on My Machine」症候群。
traditional虛擬機 (VM) 解決方案與限制
在 Docker 出現之前,業界使用「虛擬機 (Virtual Machine)」來解決這個問題。虛擬機 概念是:在實體computers上模擬出一整台「虛擬」 computers,包含complete作業系統核心 (OS Kernel)。
VM 優點:
- 完全隔離,安全性高
- 可以在 Windows 上跑 Linux 環境
VM 缺點:
- ❌ 重量級:每個 VM 都包含了complete Guest OS,佔用數 GB 硬碟空間
- ❌ 啟動慢:開機needs數分鐘(因為要啟動整個作業系統)
- ❌ 資源浪費:就算只跑a小程式,也needscomplete OS 支援
- ❌ 移植性差:VM Image 體積巨大,傳輸與部署都很困難
Docker 容器化技術 core concepts
Docker 提出了a革命性 思維:「我們不needscomplete作業系統,我們只needs應用程式運行所需 最小環境。」
容器 (Container) vs 虛擬機 (VM)
| features | 虛擬機 (VM) | Docker 容器 | |------|------------|------------| | 啟動speed | 數分鐘 | 數秒鐘 | | 硬碟空間 | GB 等級 | MB 等級 | | 效能損耗 | 15-20% 損耗 | 接近原生 | | 核心共享 | 不共享,每個 VM 有自己 OS Kernel | 共享宿主機 OS Kernel | | 隔離層級 | 完整硬體虛擬化 | 行程層級隔離 (Namespace) |
簡單來說:
- VM 是 「模擬一台computers」,每台computers都要裝自己 作業系統
- Docker 是 「創造a隔離 執行環境」,all容器共用同a作業系統核心,只隔離檔案系統、網路、行程等資源
Docker three核心元件
為了理解 Docker 如何運作,你needs記住以下三個關鍵角色:
1. Docker Engine (Docker 引擎) 這是 Docker 核心程式,是a在背景執行 守護行程 (Daemon)。它負責managedall容器 生命週期:建立、啟動、停止、刪除容器。
2. Docker Image (映像檔) Image 是a唯讀 模板,裡面包含了應用程式及其all依賴(程式碼、系統函式庫、環境變數、設定檔)。你可以把它想像成「光碟映像檔」或是「install光碟」——它本身是唯讀 ,但你可以用它來建立多個容器。
3. Docker Container (容器) Container 是 Image 運行實例。當你從 Image 啟動a容器時,Docker Engine 會在 Image 上方加上a可寫層 (Writable Layer),讓容器可以正常讀寫檔案。你可以把 Container 想像成「用install光碟開機後正在運行 computers」。
Docker 運作流程圖
Dockerfile (建置腳本)
↓ docker build
Docker Image (唯讀模板)
↓ docker run
Docker Container (運行實例)
↓ 可以有多個
Container 1 ─── 應用 A
Container 2 ─── 應用 B
Container 3 ─── 應用 C
install Docker Desktop
Docker Desktop 是 Docker 官方提供 圖形化工具,它simultaneously包含了 Docker Engine、Docker CLI 以及 Docker Compose,讓你可以在自己 computers上輕鬆使用 Docker。
macOS install步驟
步驟 1:確認系統需求
- macOS 必須是 macOS 11 (Big Sur) 或更新版本
- computers必須是 2020 年以後 Apple Silicon (M1/M2/M3) 或 Intel 晶片
步驟 2:下載 Docker Desktop 請前往 Docker 官方網站下載 macOS 版本 Docker Desktop:
🔗 https://www.docker.com/products/docker-desktop/
選擇 Apple Chip(如果你是 M1/M2/M3 Mac)或 Intel Chip。
步驟 3:install Docker Desktop
- 雙擊下載
.dmg檔案 - 將
Docker.app拖曳到Applications資料夾 - 開啟
Docker.app(首次開啟可能needs允許安全性驗證) - 等待 Docker Engine 啟動(會看到狀態列上 鯨魚圖示)
步驟 4:驗證install
install完成後,打開你 終端機 (Terminal),輸入以下指令來確認 Docker 已經正常運作:
docker version
你會看到類似以下 輸出:
Client: Docker Engine - Community
Version: 24.0.6
API version: 1.43
Go version: go1.20.7
Server: Docker Engine - Community
Engine:
Version: 24.0.6
API version: 1.43 (minimum version 1.12)
如果你看到了 Client 與 Server 資訊,就代表 Docker 已經成功install並運行!
⚠️ 常見問題: 如果你只看到
Client但沒有Server,代表 Docker Engine 沒有正常啟動。請確認 Docker Desktop 狀態列圖示是綠色 ,如果沒有,點擊圖示選擇「Start Docker Desktop」。
Windows install步驟(給 Parallels 或雙系統 使用者)
如果你是使用 Windows 開發者:
- 下載 Docker Desktop for Windows:https://www.docker.com/products/docker-desktop/
- 確認你 Windows 已啟用 WSL 2 (Windows Subsystem for Linux 2)
- install過程中選擇 Use WSL 2 instead of Hyper-V(效能更好)
- install完成後重啟computers
Linux install步驟
如果你是使用 Ubuntu/Debian 系列 Linux 使用者,可以直接透過系統套件managed工具install:
# 更新套件列表
sudo apt update
# 安裝 Docker
sudo apt install docker.io
# 啟動 Docker 服務
sudo systemctl start docker
sudo systemctl enable docker
# 將你的使用者加入 docker 群組(避免每次都要 sudo)
sudo usermod -aG docker $USER
# 重新登入後生效
[!TIP] install完成後,請執行
docker run hello-world來測試。如果看到 Hello from Docker! 歡迎訊息,就代表一切正常!
install kubectl(Kubernetes CLI)
by於我們 最終目標是將容器部署到 Kubernetes 上,我們可以先install kubectl 指令工具。
macOS install kubectl
# 使用 Homebrew 安裝(最簡單)
brew install kubectl
# 驗證安裝
kubectl version --client
輸出範例:
Client Version: v1.28.3
Kustomize Version: v5.0.4-0.20230601165947-6ce0bf390ce3
驗證最終環境
install完成後,請確認你 development environment是否準備就緒:
# 確認 Docker 可正常運行
docker run hello-world
# 確認 kubectl 已安裝
kubectl version --client
如果你兩者都能順利執行,恭喜你!你 容器化development environment已經準備完成。
本日總結
在本章中,你學到了:
- ✅ traditional部署 問題:環境不一致導致「Works on My Machine」 噩夢
- ✅ Docker 與 VM 差異:Docker 更輕量、更快、資源使用效率更高
- ✅ three核心元件:Docker Engine → Image → Container 運作流程
- ✅ install Docker Desktop:在你 computers上成功install了 Docker 執行環境
- ✅ install kubectl:為後續 Kubernetes 學習做好準備
下一章,我們將實際撰寫第a Dockerfile,將你寫好 應用程式打包成標準 Docker Image!