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