💡 实战经验
永远不要用 latest 标签
docker pull nginx 等于 docker pull nginx:latest。今天 latest 是 1.25,下个月可能变成 1.26,你的配置可能就不兼容了。永远写死版本号:nginx:1.25-alpine。
镜像体积是隐形成本
你可能觉得"服务器磁盘便宜,镜像大点无所谓"。但镜像影响的是部署速度——CI/CD 每次构建都要 pull/push,1GB 的镜像比 50MB 的慢 20 倍。用 alpine 基础镜像,养成多阶段构建的习惯。
Docker 会吃光你的磁盘
默认情况下 Docker 的日志不限大小。一个跑了几个月的容器,日志可能几十 GB。上线第一件事:配置日志轮转。其次定期用 docker system df 查看占用,再按需执行 docker system prune -a 清理未使用资源。不要随手加 --volumes,否则未使用的数据卷也会被删除。
容器不是虚拟机
容器共享宿主机内核,没有独立的文件系统隔离(除了 overlay)。一个容器里的 root 用户就是宿主机的 root。不要因为用了 Docker 就放松安全意识——该限制资源的限制,该用非 root 的用非 root。
Compose 文件不要超过 3 个服务
微服务拆太细、Compose 文件写到 200 行——这是过度工程。大多数项目 2-3 个服务(app + db + cache)就够了。等真的需要拆分时再用 Kubernetes。