镜像是模板,容器是运行实例
可以把镜像理解为只读的应用模板,容器则是从镜像启动的运行实例。更新代码后通常重新构建镜像,而不是进入生产容器手工改文件,这样环境才容易复现。
数据库数据不要只留在容器内部
容器可以被删除和重新创建,因此需要持久保存的数据应使用 volume、绑定存储或外部数据库。否则重建容器时,数据可能跟着临时文件系统一起消失。
Compose 适合描述本地多服务环境
一个项目包含 Web、数据库、缓存等多个服务时,可以用 Compose 把端口、网络、环境变量和依赖关系写进配置,减少“我的电脑能跑,你的不能跑”的环境差异。
镜像里不要写死密码和生产密钥
API key、数据库密码和证书不应直接写进 Dockerfile 或提交到公开仓库。生产环境应使用合适的秘密管理机制,并定期更新基础镜像和依赖。
Docker 还可以和哪些工具比较
“能在我电脑上跑”不等于“这个镜像适合生产”。 除了 Dockerfile 能构建成功,还要关注镜像体积、基础镜像来源、密钥是否被打进镜像、容器以什么用户运行,以及数据究竟应该留在容器里还是挂载到外部存储。开发阶段先把环境复现做好,生产阶段再把安全和运维边界补齐。
从开发环境走向生产环境时,Docker 的重点会从“能跑起来”变成“能稳定重建”。镜像应尽量保持可重复构建,配置和密钥不要直接写进镜像,数据持久化也要和容器生命周期分开考虑。对于小团队,先把一个服务的构建、启动、日志和升级流程跑顺,再扩展到复杂编排,通常比一开始就追求完整容器平台更稳。
官方资料:Docker 官方入门文档