作为一名系统管理员, Matt Jaynes 结合自身经验对 Docker 进行了评价。它在网站 DevOps University 上发表了博文《关于Docker 的几大误区》,对那些在小范围内采用Docker 而又没有坚实的基础设施作基础的情况提出了警告,并提供了改进部署过程的可选方案。
Benjamin Wootton 是 Contino 的 CTO。在博文《微服务——不是免费的午餐》中,他早已对基于微服务的架构的巨大运维开销提出了警告。Matt 的经验主要来自设置 Web 应用程序服务器,他同样提出了警告,并且指出,要想在生产环境中安全的使用它,就要成为系统管理专家:
当前,为了使用 Docker,用户需要更多系统方面的专业知识和技能,而不是更少。我们读到的关于 Docker 的几乎每一篇文章,给出的都是极其简单的应用场景,忽略了在多主机生产系统上使用 Docker 的复杂性。这让人对在生产环境中使用 Docker 实际上要做些什么产生了错误的印象。
如果不想学习如何管理服务器,那应该选择使用像 Heroku 那样的平台即服务(PaaS)。Docker 不是这样的解决方案。
Matt 建议从基于角色的容器(应用程序、数据库、缓存、……)入手,并且只用于有意义的角色,但前提是,项目有一个坚实的基础设施作基础:
如果基础设施存在严重的漏洞,那就不应该考虑 Docker。那就像将一辆法拉利停在不牢固的悬崖边上。
在部署过程中,用户还可以做一些其它优化来提升性能和一致性,而不是采用 Docker:
- 使用配置管理工具(Ansible、Puppet、……)来简化服务器创建和管理,尤其是在云环境中。
- 创建云镜像,而不是从头开始配置,以便更快地创建新服务器。基础镜像和已启动的服务器仍然可以使用配置管理工具进行配置。
- 固定版本,明确包的版本以及它们之间的依赖关系,确保软件不会随着环境或时间的变化而变化。
- 使用 git 或 rsync 部署应用程序,那样服务器可以以最小的下载量更新,类似于 Docker 的镜像层缓存。
- 如果应用程序构建或准备过程耗时很长,则使用包部署应用程序。使用预先构建的包,如 zip、rpm 或 deb,会加速跨服务器的部署过程。
对于多主机生产环境,Matt 建议,如果不需要 Docker 提供的额外的好处,就尽可能多地使用这些优化方法。目前,大规模的使用 Docker 要等到它所带来的好处大过它额外增加的复杂性。但是,按照该项目的进展速度,情况很快就会有所不同。
查看英文原文:**** Top Docker Misconceptions
评论