Docker 基礎
Section titled “Docker 基礎”Docker 是一個開源的容器化平台,讓開發者可以將應用程式及其依賴打包到可移植的容器中。 相較於傳統虛擬機,容器共享宿主機的核心,啟動速度更快、資源消耗更低。
Image(映像檔)
Section titled “Image(映像檔)”映像檔是容器的藍圖,包含應用程式碼、執行環境和系統工具。 映像檔採用分層架構,每一層只記錄差異,大幅節省儲存空間。
Container(容器)
Section titled “Container(容器)”容器是映像檔的執行實例,提供隔離的執行環境。 容器是短暫的 — 停止後內部資料會遺失,因此需要 Volume 進行持久化。
Volume(卷宗)
Section titled “Volume(卷宗)”卷宗用於持久化容器資料,確保容器重啟後資料不遺失。
# 拉取映像檔docker pull nginx:latest
# 列出本機映像檔docker images
# 建置自訂映像檔docker build -t my-app:v1 .
# 刪除映像檔docker rmi nginx:latest# 啟動容器(背景執行 + 端口映射)docker run -d -p 8080:80 --name web nginx
# 列出執行中的容器docker ps
# 列出所有容器(含已停止)docker ps -a
# 停止容器docker stop web
# 移除容器docker rm web# 查看容器日誌docker logs -f web
# 進入容器 shelldocker exec -it web /bin/sh
# 查看容器資源使用docker stats
# 檢查容器詳細資訊docker inspect webDockerfile 最佳實踐
Section titled “Dockerfile 最佳實踐”-
使用多階段建置 減少最終映像檔大小
FROM node:20-alpine AS builderWORKDIR /appCOPY package*.json ./RUN npm ciCOPY . .RUN npm run buildFROM node:20-alpineWORKDIR /appCOPY --from=builder /app/dist ./distEXPOSE 3000CMD ["node", "dist/index.js"] -
善用快取層 — 將不常變動的步驟放在前面
-
使用
.dockerignore排除不必要的檔案 -
不以 root 執行 — 在 Dockerfile 中加入
USER node
- Docker 容器化工具集 — 基於 Docker Compose 的開發環境自動化專案
- Kubernetes 入門 — 從 Docker 進階到容器編排的下一步
- Felimet Hub 網站 — 使用 Docker 部署的 Astro 靜態網站