跳到內容

Docker 是一個開源的容器化平台,讓開發者可以將應用程式及其依賴打包到可移植的容器中。 相較於傳統虛擬機,容器共享宿主機的核心,啟動速度更快、資源消耗更低。

映像檔是容器的藍圖,包含應用程式碼、執行環境和系統工具。 映像檔採用分層架構,每一層只記錄差異,大幅節省儲存空間。

容器是映像檔的執行實例,提供隔離的執行環境。 容器是短暫的 — 停止後內部資料會遺失,因此需要 Volume 進行持久化。

卷宗用於持久化容器資料,確保容器重啟後資料不遺失。

Terminal window
# 拉取映像檔
docker pull nginx:latest
# 列出本機映像檔
docker images
# 建置自訂映像檔
docker build -t my-app:v1 .
# 刪除映像檔
docker rmi nginx:latest
  1. 使用多階段建置 減少最終映像檔大小

    FROM node:20-alpine AS builder
    WORKDIR /app
    COPY package*.json ./
    RUN npm ci
    COPY . .
    RUN npm run build
    FROM node:20-alpine
    WORKDIR /app
    COPY --from=builder /app/dist ./dist
    EXPOSE 3000
    CMD ["node", "dist/index.js"]
  2. 善用快取層 — 將不常變動的步驟放在前面

  3. 使用 .dockerignore 排除不必要的檔案

  4. 不以 root 執行 — 在 Dockerfile 中加入 USER node