Docker 与 Compose:自托管部署的最小知识
对自托管来说,掌握容器和一份编排文件,就足以部署、升级和迁移大多数开源服务。数据卷映射和固定镜像版本是两个保命习惯,更新前先备份、更新后验证功能,并保留可回滚的旧版本。
核心要点
- 容器把应用和依赖打包,编排文件让端口、目录和变量变成可读配置。
- 镜像与容器、数据卷、端口映射、环境变量、编排文件构成最小知识集。
- 不固定镜像版本和忘记映射数据目录是部署最常见的失误。
- 更新前先备份,更新后验证功能,保留回滚路径。
一句话结论:对自托管来说,掌握容器和一份编排文件,就足以部署、升级和迁移大多数开源服务。
为什么推荐从容器开始
直接装在系统里的软件,依赖、配置和文件散落在各处,换机器时要重新摸索。容器把应用和依赖打包在一起,编排文件则把端口、目录、环境变量写成可读的配置。结果是:部署和迁移变成复制一份文件加一条命令。
最小知识清单
- 镜像与容器:镜像像安装包,容器是运行中的实例。
- 数据卷:把容器内的数据目录映射到宿主机,容器删了数据还在,这是备份的前提。
- 端口映射:把容器端口映射到宿主机端口,决定服务从哪里访问。
- 环境变量:数据库密码、时区、域名等通过变量传入,避免写死在镜像里。
- 编排文件:用一个文本文件描述服务、卷、网络和依赖关系,便于版本管理和重建。
部署的基本流程
- 建一个独立目录,存放编排文件和配置文件。
- 在编排文件里固定镜像版本,不要用浮动的最新标签。
- 把数据目录映射到宿主机,并确认目录权限。
- 启动后检查日志,确认服务正常监听。
- 立刻做一次备份并尝试恢复,验证流程可行。
常见坑
- 不固定镜像版本,某次更新后服务起不来。
- 忘记映射数据目录,容器升级导致数据丢失。
- 把密码写进编排文件并提交到公开仓库。
- 直接开放端口到公网,没有加反向代理和访问控制。
行动清单
- 用一个非关键服务练习完整的部署、升级、回滚。
- 编排文件纳入版本管理,密码用环境文件单独管理。
- 记录每个服务的数据目录位置,写进备份清单。
- 更新前先备份,更新后验证功能。
- 把编排文件、环境变量模板和部署说明一起纳入版本管理,密码只放在不入库的环境文件里;每次升级前先做一次备份并确认旧镜像仍在本地,方便出现问题时快速回滚。
注意事项
- 容器与网络安全配置不当会带来风险,本文不构成专业建议,请参考官方文档并咨询专业人士。
- 具体命令与参数随版本变化,请以官方文档为准。
参考资料
本文参考以下公开信息源,具体数据与表述以原始来源为准。