当前位置: 首页 > news >正文

为什么要放弃用Docker?

想当年,我会觉得开发不用Docker,天都要塌了。Docker 几乎是所有开发团队的标配。需要数据库?docker run 一个。要保证环境一致?上 docker-compose。Docker 就是一块砖,哪里需要往哪里搬。

最开始 Docker 确实解决了很多问题。

但随着时间推移,我慢慢发现,尤其是在本地开发这个场景下,Docker 带来的麻烦似乎比它解决的要多。我会开始想:“我们还在用 Docker,是因为它最好,还是仅仅因为大家都这么用?”

但是,顶着锅盖我也要说一句,在本地开发上,Docker 正在拖慢我们。

当然,每个人都有趁手的工具,我想分享的是为什么Docker会坑我们,以及有没有更好的解决办法。

我不再爱 Docker 的原因

刚开始用 Docker 时,我惊为天人,虽然从中踩了不少坑,学习的曲线又长,但那时候中二病犯了,觉得我自己搞定了一个难题,可厉害了。而且,Docker 让我告别了繁琐的环境配置,每个人的数据库、缓存版本都完全一致,令朕舒心,封为舒妃

期间当然有不少小问题,但好景不长,很快小问题就变成了日常开发的大阻碍。

我的电脑快被吃掉了

同时运行几个容器,应用服务、数据库、缓存、消息队列,对 CPU 和内存的消耗是巨大的。电脑的风扇开始狂转,电池掉得很快快。就算是简单的开始写代码的动作,也要等几分钟等到容器启动,还要忍受电脑的卡顿,我这个人急性子,每次等到破防。

文件同步,一场噩梦

代码修改后立刻看到效果,是开发者的基本需求。但在 macOS 和 Windows 上,Docker 的文件卷挂载性能一直不理想。改一行代码,等上几秒钟才能看到刷新。这在一天数百次的修改中,累积起来的时间和挫败感是相当可观的。

调试变得更复杂

当容器里出了问题,调试远比在本地直接运行要麻烦。附加调试器、查看日志、追踪性能,都需要额外的步骤。我们花了很多时间去解决容器的问题,而不是业务本身的问题。

所以,我也开始在市面上找有没有 Docker 替代品。

还有哪些选择?

我想找的有两个方向:一是寻找更轻量的容器化工具,二是干脆跳出容器的思维,回归更纯粹的本地开发环境。

更好的容器化工具

对于那些仍然需要容器,或者工作流与 Kubernetes 紧密绑定的开发者来说,放弃 Docker Desktop 不意味着放弃容器。市面上有一些很不错的替代品。

  • Podman: Red Hat 出品,它最大的特点是无守护进程(daemonless)架构。这意味着它本身占用的资源更少,也更安全。它的命令行接口和 Docker 几乎完全一样,你甚至可以用 alias docker=podman 来无缝切换,学习成本很低。

  • Colima: 如果你是 macOS 用户,Colima 是一个很好的选择。它非常轻量,启动速度快,资源消耗小。它在底层使用 Lima(Linux virtual machines on macOS),为你提供了一个运行容器的 Linux 环境,并且与 Docker CLI 兼容。

    • Rancher Desktop: 这是一个开源项目,提供了一个集成了 Kubernetes 和容器管理能力的桌面应用。如果你不仅需要容器,还想在本地跑一个 K8s 集群,Rancher Desktop 是一个功能全面的选择。

      这些工具在一定程度上缓解了 Docker Desktop 的性能问题,但它们仍然基于虚拟机技术,无法完全摆脱其固有的性能损耗。

      回归原始但更高效的集成环境

      在我几乎要放弃的时候,我发现了另一条路:为什么本地开发一定要用容器?尤其对于我们这些主要做 Web 开发的团队来说,追求的无非是开发语言比如Python、Node.js、Rust、MySQL、Redis 等服务的稳定运行。

      于是,我把目光投向了新一代的本地集成开发环境。

      ServBay

      这是我最大发现,也是我目前的主力工具。你可以把它理解为 MAMP 的超级进化版。ServBay 解决了传统集成环境(如 MAMP、XAMPP)的很多痛点。

      • 性能优越: 因为所有服务都是在本地原生运行,没有虚拟机的性能开销,无论是应用响应速度还是文件读写,都比 Docker 快得多,ServBay 的安装包体积小巧,只有20MB。

      • 灵活的多版本管理: ServBay 允许同时运行多个不同版本的开发语言,包括但不限于Python、Rust、Java PHP、Node.js、MySQL 等服务,并且可以为每个网站指定不同的版本。这在需要维护多个老旧项目时非常方便。

      • 易用性: 它提供了一个简洁的图形界面,添加网站、配置域名、一键开启 SSL 都很简单,不需要去手动修改复杂的配置文件。

      • 工具集完整: 内置了 Redis、Memcached、DNS 服务器、内网穿透及本地AI等常用工具,开箱即用。

      对于绝大多数 Web 开发场景,ServBay 提供的速度和便利性,让我彻底告别了 Docker 带来的风扇噪音和漫长等待。

      MAMP / XAMPP / WAMP

      这些是老牌的集成环境工具,很多人可能在学习编程的初期都用过。它们足够简单,能够满足一些基础的开发需求。但相比之下,它们在多版本共存、性能和功能扩展性上,已经显得有些陈旧。

      到底该如何选择?

      停止使用docker 并不是一个绝对的口号,而是一个值得思考的选项。选择哪种工具,取决于你的具体需求。

      • 如果你的工作流和 Kubernetes 深度绑定,或者你需要频繁构建不同架构的镜像,那么 PodmanRancher Desktop 这类容器工具依然是你的首选。

      • 如果你是 macOS 用户,只想找个轻量的容器运行时,Colima 值得一试。

      • 如果是普通的Web开发者,追求本地开发的极致速度和简单性,那么试试 ServBay、MAMP 这样的集成工具也是个不错的选择。它能让你把精力重新聚焦在代码上,而不是和工具搏斗。

        结语

        技术工具本身没有好坏之分,只有适合与否。Docker 毫无疑问是一项伟大的技术,它改变了软件的交付和部署方式。但在本地开发这个特定的场景里,它可能已经不再是那个最优解。

        我们的目标是高效、愉快地编写代码。如果一个工具开始成为你的负担,那就勇敢地去寻找它的替代品。对我而言,放弃 Docker Desktop,是一次正确的选择。我的电脑变得安静了,我的开发体验也更流畅了。

        http://www.dtcms.com/a/461173.html

        相关文章:

      • 东方仙盟修仙(五)赛博科技修仙养老是一种爱好
      • 大模型训练过程中主动学习和课程学习的全面对比
      • Redis数据库隔离业务缓存对查询性能的影响分析
      • Mapper接口的解析
      • 网站中链接怎么做的广东网站建设案例
      • 网站开发部门结构公司做网站的费用属于什么费用
      • 做电影方面的网站怎么做外贸免费平台
      • transformers音频实战02-基于 Speech Commands 数据集的语音识别实战项目全流程
      • 天津做网站美工锦州网站建设信息
      • Terraform + RustFS 实战:10分钟实现对象存储 IaC 化,运维效率提升300%
      • 遇到RabbitMQ 的 `channel_max` 限制报错
      • 机器学习实战项目:Python+Flask 汽车销量分析可视化系统(requests爬车主之家+可视化 源码+文档)✅
      • 惠州城乡建设部网站印刷包装公司网站模板
      • WEB前端 JavaScript 学习笔记
      • 如何使用Python实现LRU缓存
      • OSCP渗透实战(第二期):Linux系统攻防与权限提升完全指南
      • LeetCode 118. 杨辉三角
      • AI原生应用架构白皮书 - AI原生应用架构及其关键要素
      • 蓝绿发布与金丝雀发布策略简介_笔记
      • 流媒体视频技术在明厨亮灶场景中的深度应用
      • 建设网站是否需要一个主机全球邮企业邮箱登录
      • 余弦相似度凭什么成了文本推荐的“方向指南针”?从几何夹角到语义匹配的AI密码
      • 解决Docker Hub被封的问题
      • 基于android的中天模拟键盘APP的设计与实现(初稿)
      • 数据结构——十七、线索二叉树找前驱与后继
      • 数据结构-----栈队列
      • 兰州网站制作有哪些怎样下载字体到wordpress
      • 【ASP.NET Core】分布式场景下ASP.NET Core中JWT应用教程
      • C++分布式语音识别服务实践——性能优化与实战部署
      • 【硬核分表】MySQL水平分表全景指南:从策略对比、全局ID到ShardingSphere实战