简要
通常情况下, 服务器并不会只运行单一的服务. 但有的时候想要部署不同服务会因为环境依赖的冲突或不支持, 又或者被繁杂的设定搞得头昏眼花. 身为懒惰的程序猿, 我会选择使用 container 来简化我的部署作业.
为什么
首先最烦人的, 是不同作业系统之间的不相容. 比如 windows <> *nix 系统之间的一些小问题如大小写敏感, 档案路径等等. 另外就是一些项目的依赖只存在某个作业系统的问题. 这种情况下我更宁愿牺牲一丢丢的服务器效能, 生成一个可用的容器来部署我的项目. 再来就是保持服务器的环境干净, 不会因为安装太多的依赖而导致出现一些奇奇怪怪的问题.
优缺点
优点:
- 可以使用一些预先封装好的映像来部署项目, 比如要部署一个网页应用, 就可以直接使用 nginx / httpd 的映像.
- 修改简单且不会影响其他服
- 保持服务器的干净
- 能在同一台服务器中, 部署各种各样的服务.
- 使用 vscode 作为开发工具, 能透过容器生成 devcontainer 开发环境.
缺点:
- 门槛略高, 通常情况下需要使用指令进行部署.
总结
使用 container容器 作为生产环境我认为是可行的, 但要考虑应用程序的量级. 如果量级太大(比如每分钟超百万请求)也许 K8s 群集可能会更适合.