Containers
是什麼
想像一個海運集裝箱:無論你往裡面裝什麼,它都作為一個密封的整體運輸,到達任何港口時都保持原樣。軟體容器的工作方式與此相同。容器把你的應用連同執行所需的一切——程式碼、庫、系統工具——打包成一個可移植的整體。這個整體在你的筆記本、測試伺服器或雲端上以相同的方式執行,從而消除了經典的"在我機器上能跑"問題。Docker 是構建容器最常用的工具。
優勢
- 處處一致的環境——一次構建,到處執行。
- 對執行時、作業系統包和依賴擁有完全控制。
- 一旦執行就沒有冷啟動;適合穩定流量。
- 可跨雲服務商移植,避免嚴重的廠商鎖定。
- 支援任何語言或框架,包括長時間執行的程序。
取捨
- 你需要管理更多:基礎映象、更新和資源規格。
- 除非新增編排器(如 Kubernetes),否則擴充套件不會自動進行,而編排器又會帶來實實在在的複雜性。
- 即使空閒,正在執行的容器也會產生費用。
- 映象越大,構建和部署越慢。
- 映象的安全補丁由你自己負責。
何時使用
當你需要一個一致、完全可控的環境時選擇容器:有特定系統依賴的應用、長時間執行的服務、後臺 worker,或任何超出無伺服器和邊緣函式限制的場景。
與 vibe coding 的契合度
容器是 AI 主導的優秀目標,因為 Dockerfile 不過是一份配方,而 agent 很擅長編寫配方。你可以讓 AI 生成 Dockerfile、.dockerignore 和部署命令,然後通過把構建報錯讀回給它來迭代。建議:要求使用小型基礎映象(如 alpine 或某個 slim 變體)以及多階段構建——這能讓映象精簡、構建迅速、攻擊面更小。Fly.io、Google Cloud Run 和 Railway 等平臺都能用一條命令部署容器。
# Dockerfile — 多階段 Node 應用
FROM node:20-slim AS build
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build
FROM node:20-slim
WORKDIR /app
COPY --from=build /app .
EXPOSE 3000
CMD ["node", "server.js"]
# 在本地構建並執行
docker build -t my-app .
docker run -p 3000:3000 my-app