作者:佯良
在连续两年里为每一个项目都配备一个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,但是并没有对文件进行进一步的管理,只是粗暴的将文件到处复制粘贴。当服务器上开了数百个容器后发现1TB的硬盘被吃掉了一半时,我的内心里只有两个字:绝望。这意味着需要不停增加服务器资源才能维持系统的运行,如果不采用docker部署的方式,可能并不需要如此大的磁盘空间。
除了磁盘空间的占用外,作为一名中国用户,时区、墙等都是问题,当然这些问题都是可以解决的,但是也很花费时间。
我并不是在指责docker的不好,正相反,我觉得docker是个非常酷的工具。使用docker后,在我更新半年前写的爬虫时,完全不用担心该怎么从新部署,还是那条熟悉的命令即可完成,减轻了很多记忆上的压力。
那么在什么时候不必使用docker呢
架构简单,类似数据库+应用程序这种情况是不需要docker的,因为你花在调试docker上的时间可能比你完成具体业务逻辑的时间还要多(想偷懒不想安装各种库时除外);业务上docker会占用太多资源的时候可以考虑不使用docker,因为服务器资源真的很贵;啊,想来想去,不使用docker的场景真少啊,说到底我还是喜欢使用docker的,连多找几个不用docker的理由都找不到(笑。
docker并不是万能的,但如果你现在告诉我不要使用docker,我可能还做不到(docker是一个让人用上就不想扔的产品,部署时的如丝般流畅还是够吸引人啊)。
- 蜜度索骥:以跨模态检索技术助力“企宣”向上生长
- 1—8月我国软件业务收入85492亿元,同比增长11.2%
- 合合信息启信宝数据产业洞察:长三角地区数据企业超48000家,数量领跑全国
- 2025年全球网络安全支出将激增15% | 行业观察
- 华为数据存储两大新品齐发:全面闪存化,全面向AI
- 数据中心太耗电,微软携手Constellation Energy探索核能供电新途径
- 戴尔一周内发生两起数据泄露事件,Atlassian工具成泄露源头
- 华为ICT学院年会2024举办,ICT学院3.0计划正式启航
- 华为启动全球金融伙伴“融海计划”,共创行业新价值
- 华为联合多家伙伴发布《现代化金融核心系统白皮书:实践篇》
- 华为发布数据智能解决方案5.0,加速金融大模型应用从“赋能”到“产能”
免责声明:本网站内容主要来自原创、合作伙伴供稿和第三方自媒体作者投稿,凡在本网站出现的信息,均仅供参考。本网站将尽力确保所提供信息的准确性及可靠性,但不保证有关资料的准确性及可靠性,读者在使用前请进一步核实,并对任何自主决定的行为负责。本网站对有关资料所引致的错误、不确或遗漏,概不负任何法律责任。任何单位或个人认为本网站中的网页或链接内容可能涉嫌侵犯其知识产权或存在不实内容时,应及时向本网站提出书面权利通知或不实情况说明,并提供身份证明、权属证明及详细侵权或不实情况证明。本网站在收到上述法律文件后,将会依法尽快联系相关文章源头核实,沟通删除相关内容或断开相关链接。