博主信息
博文 15
粉丝 0
评论 0
访问量 12464
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
docker并不是万能的
Tina
原创
655人浏览过

在连续两年里为每一个项目都配备一个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是一个让人用上就不想扔的产品,部署时的如丝般流畅还是够吸引人啊)。


本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学