Docker 是“不可变”架构。当你希望改变一个服务的时候(比如更新版本、修改配置、开放端口),不允许直接登录到服务器上改变某个文件,而是应该把这个服务整个删掉,然后替换成新的版本。你不能改变它,只能替换它,这就是 Docker 的优点。
在服务规模大的时候,这种维护方式能够保持每个服务版本、配置的一致性。Docker 禁止对容器内部做任何修改,所以只要查看镜像版本和调度参数,就能判断服务的一致性。系统运行在软件定义的基础架构上,这样就可以使用版本管理工具(比如 Git)管理基础架构的变化,像管理软件版本一样管理整个环境。
不可变架构就是 Docker 带来的优势,如果你一定要改变它,这就是缺点。
目前我感觉的弊端就是不够好……
很多人吐槽了Docker的很多麻烦事儿,简单说就是抛弃了传统的操作系统环境,很多原来的东西都要用新的容器工具链。Docker的隔离性也没有虚拟机级别的好。这些都是客观存在的。
但是很多人吹捧的Docker的优势,什么部署简单,什么编排,等等等等。
这些东西不是Docker出现之后才有的啊,在虚拟机上我们不能做到部署简单,自动伸缩,编排这些工作么?当然也可以啊……
所以,其实在我看来Docker最终还是要出于成本考虑。结论就是,并不明显,因为传统的虚拟机操作系统基础资源损耗并不大。各种云提供的竞价实例和共享实例也足够便宜。
最后谈谈我目前不太喜欢Docker的一点,整个社区都在Docker的封闭环境里面圈地自萌。很多东西完全没有与现有的虚拟化技术和传统模式结合,这并不Open……
譬如说,这就是我在虚拟机上搞出来的服务器管理,并不比Kubernetes少多少功能:
要我说,未来还是FaaS的,容器仍旧只是过渡性技术……
关于快速拉起的问题这里也统一说一下:
容器不是存在于真空中的,你要快速拉起,就要有闲置资源。你要有闲置资源,虚拟机我也能给你快速拉起(预备几台不就好了,实在不行还能临时抽调)。
至于一个劲儿的强调几秒几秒的,IIS应用程序池,没请求的时候可以处于最低资源占用运行,请求一来纳秒级启动,整天秒天秒地的。怎么不想想容器能快速拉起的前提就是你下面有个宿主呢?
最后解释一下什么叫做不够好。
Docker是一套新的承载环境,相对于传统的虚拟机需要非常多的新的工具链,但远没有成熟。带来的好处,在传统的模式下也不是没有方案。所以Docker仍然缺少决定性的优势。并不能说服大家大规模的迁移和适应。
相对而言的,FaaS虽然需要更多的迁移成本,更多的限制。但是FaaS有几乎决定性的优势,近乎无限的容量和接近零的运维成本。所以,全面的Docker编排部署,始终是个过渡方案。与其投入那么多精力折腾,不如直接做FaaS……
本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度,google,bing,sogou 等
© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有