微信号:infoqchina

介绍:有内容的技术社区媒体

【实战】关于Docker的几大误区

2014-07-14 19:38 InfoQ

作为一名系统管理员,Matt Jaynes结合自身经验对Docker进行了评价。它在网站DevOps University上发表了博文《关于Docker的几大误区》,对那些在小范围内采用Docker而又没有坚实的基础设施作基础的情况提出了警告,并提供了改进部署过程的可选方案。

Benjamin WoottonContinoCTO。在博文《微服务——不是免费的午餐》中,他早已对基于微服务的架构的巨大运维开销提出了警告。Matt的经验主要来自设置Web应用程序服务器,他同样提出了警告,并且指出,要想在生产环境中安全的使用它,就要成为系统管理专家:

当前,为了使用Docker,用户需要更多系统方面的专业知识和技能,而不是更少。我们读到的关于Docker的几乎每一篇文章,给出的都是极其简单的应用场景,忽略了在多主机生产系统上使用Docker的复杂性。这让人对在生产环境中使用Docker实际上要做些什么产生了错误的印象。

如果不想学习如何管理服务器,那应该选择使用像Heroku那样的平台即服务(PaaS)。Docker不是这样的解决方案。

Matt建议从基于角色的容器(应用程序、数据库、缓存、……)入手,并且只用于有意义的角色,但前提是,项目有一个坚实的基础设施作基础:

如果基础设施存在严重的漏洞,那就不应该考虑Docker。那就像将一辆法拉利停在不牢固的悬崖边上。

在部署过程中,用户还可以做一些其它优化来提升性能和一致性,而不是采用Docker

  • 使用配置管理工具(AnsiblePuppet、……)来简化服务器创建和管理,尤其是在云环境中。

  • 创建云镜像,而不是从头开始配置,以便更快地创建新服务器。基础镜像和已启动的服务器仍然可以使用配置管理工具进行配置。

  • 固定版本,明确包的版本以及它们之间的依赖关系,确保软件不会随着环境或时间的变化而变化。

  • 使用gitrsync部署应用程序,那样服务器可以以最小的下载量更新,类似于Docker的镜像层缓存。

  • 如果应用程序构建或准备过程耗时很长,则使用包部署应用程序。使用预先构建的包,如ziprpmdeb,会加速跨服务器的部署过程。

对于多主机生产环境,Matt建议,如果不需要Docker提供的额外的好处,就尽可能多地使用这些优化方法。目前,大规模的使用Docker要等到它所带来的好处大过它额外增加的复杂性。但是,按照该项目的进展速度,情况很快就会有所不同。


 
InfoQ 更多文章 Facebook如何实现PB级别数据库自动化备份 学术派Google软件工程师Matt Welsh谈移动开发趋势 Spotify为什么要使用一些“无聊”的技术? 妹纸们放假了,汉纸们做啥? 大多数重构可以避免
猜您喜欢 镇长教你如何制作字符画 欢迎来到『英语流利说』技术团队的公众号! 中国移动 去“IOE”与核心能力掌控之路 GitHub上整理的一些实用工具 【PHP100大讲堂 - 网络直播】今晚相聚19:00点:跟我一起玩转Mysql数据库 II