环境跟着应用走

镜像把依赖打包,容器把进程关进可复制的边界。

FROM debian:bookworm-slim
COPY app /usr/local/bin/app
CMD ["app"]

“我这里能跑”通常不是代码天赋,而是机器上偷偷多了某个库。Docker 把程序、依赖和启动命令封进镜像,换一台主机也应得到同一份行为。

镜像分层

基础系统、运行时、依赖、应用代码一层层叠上。改得越靠上,构建越快;Dockerfile 写得乱,缓存就全部作废。

容器进程

容器不是微型虚拟机,而是带隔离的进程。一个容器做好一件事,日志从标准输出拿走,生命周期才清晰。

数据卷

容器可以扔,数据不行。数据库文件、上传目录要挂到卷上,否则一次重建就会把业务记性清零。

网络

服务之间用网络名相认。端口映射只是对外的窗口,内部通信不必全部暴露到宿主机。

编排

Compose 用一份文件拉起应用、缓存和数据库。开发环境和演示环境越接近,缺陷越早出现。