Blogger Information
Blog 15
fans 0
comment 0
visits 9347
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
docker并不是万能的
Tina
Original
502 people have browsed it

在连续两年里为每一个项目都配备一个docker后,我变得越来越不喜欢使用docker了。

不过值得肯定的是,在写完dockerfile和docker-composer之后,一行代码直接部署的痛快感,真的会让人身心愉悦。

但是,为了这一行代码的部署,调试过程也是十分折磨人的。

docker表面上很方便,其实工具链之间的衔接十分糟糕。

docker将linux的namespace做了深层次的封装,使用户上手的难度非常低,部署到生产环境也很容易。但这仅限于小型项目,比如你的一个nodejs+mongodb或者php+mysql的架构方式。如果是稍微复杂一些的项目,依赖关系非常多的话,你会发现,docker会出现各种神奇的bug。比如docker-compose之间的依赖不会等待被依赖者加载完毕,挂载volume有时会无法在entrypoint或command中执行命令,必须要用COPY…诸如此类,原本不需要如此复杂的部署,如今却变得复杂和难以维护。

在进行多机部署的时候,跟着官方文档走都不能成功,上stackoverflow和github上查了半天也查不到任何解决办法,是经常发生的事情。

当然用多了之后会习惯docker的不完美,但也会让你思考,这个项目一定需要使用docker吗?

docker的确降低了运维难度,但是加大了运营成本。

在我看来,docker最大的一个缺点是,十分吃硬盘。docker封装的namespace,但是并没有对文件进行进一步的管理,只是粗暴的将文件到处复制粘贴。当服务器上开了数百个容器后发现QQ买卖平台1TB的硬盘被吃掉了一半时,我的内心里只有两个字:绝望。这意味着需要不停增加服务器资源才能维持系统的运行,如果不采用docker部署的方式,可能并不需要如此大的磁盘空间。

除了磁盘空间的占用外,作为一名中国用户,时区、墙等都是问题,当然这些问题都是可以解决的,但是也很花费时间。

我并不是在指责docker的不好,正相反,我觉得docker是个非常酷的工具。使用docker后,在我更新半年前写的爬虫时,完全不用担心该怎么从新部署,还是那条熟悉的命令即可完成,减轻了很多记忆上的压力。

那么在什么时候不必使用docker呢

架构简单,类似数据库+应用程序这种情况是不需要docker的,因为你花在调试docker上的时间可能比你完成具体业务逻辑的时间还要多(想偷懒不想安装各种库时除外);业务上docker会占用太多资源的时候可以考虑不使用docker,因为服务器资源真的很贵;

啊,想来想去,不使用docker的场景真少啊,说到底我还是喜欢使用docker的,连多找几个不用docker的理由都找不到(笑。

docker并不是万能的,但如果你现在告诉我不要使用docker,我可能还做不到(docker是一个让人用上就不想扔的产品,部署时的如丝般流畅还是够吸引人啊)。


Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post