很高兴看到这个问题!
我们将应用大规模运行在docker环境已经超过一年时间了,在使用这个过程中我们踩过不少的坑,也在实际使用过程中发现docker不如最初设想的那么美好。尽管如此,我们还是一致认为,docker对整个IT组织都是友善的,能有效提升我们的业务交付效率。
以下是我们基于kubernets集群环境下使用Docker的一些改变和总结:
1、减少环境对应用的影响,有助于IT组织实现应用环境的标准化;
其镜像技术可以有效的屏蔽环境对代码的影响,基本可以做到开发、测试、生产在运行环境上完全一致,通过Docker我们实现了过去几年都未能推动的技术栈、环境统一管理能力(之前有技术栈,但迟迟未能落地);
2、有效协助IT组织快速构建开发验证、测试及生产环境;
由于业务复杂度高,各应用系统之间耦合度超级高,我们在构建测试环境时需要耗费的精力超级大,通过kubernets的编排和docker镜像管理能力,我们实现了快速复制整套应用集成环境的能力(当然,docker不解决数据层的问题)
3、提升运维的应用运行环境的交付速度;
构建应用环境(不管是开发还是测试),不需要创建虚拟机、部署中间件等过程,几乎可以做到分钟级提供。
当然,在使用过程中,我们也发现有些功能不如设想的那么美好:
1、资源利用率,提升真的很有限,基于docker的不稳定性等,实际还看不到这部分的收益;
2、弹性伸缩不如想象中的那么好用,但还是提升了运维在应用扩容上的效率;
3、管理docker集群本身的容量花费的精力比想象中的要高;
4、持久化、混合部署是当前docker环境的最大挑战。
实则是docker改变的传统的IT交付方式。
通俗的讲,docker可以协助你保证你的软件在“开发环境”、“测试环境”以及“生产环境”中运行的环境都一致,这也是docker技术一开始的初衷!
传统方式,我们常常听到“我的软件在开发环境中运行的好好的,到了生产就有问题了”。传统交付模式下,开发人员开发的软件,运维人员部署软件,由于开发环境和测试环境是两个环境,最终会导致运维部署线上环境时频繁出现问题。docker标准化这个过程了。
目前,许多大公司都基于docker研发自己的paas平台。基于paas平台对多环境管理、应用管理等等。小公司也在积极的拥抱docker技术。可以说,IT历史上,没有哪一个开源软件有docker成长的这么迅速。可想而知,docker给我们IT带来质的变化。