Py学习  »  docker

Docker 已成过去式,是时候向前看了

大迁世界 • 4 周前 • 67 次点击  

我有一支技术全面、经验丰富的小型团队,专注高效交付中等规模外包项目,有需要外包项目的可以联系我

Docker 曾经是 DevOps 的代名词,风光了近十年。

但时代变了。到了 2025 年,如果还在把 Docker 当成万能药,那你就该好好审视一下现状了。

这篇文章不是为了吐槽 Docker,而是实事求是地告诉你 Docker 为什么已经逐渐淡出舞台,以及现代基础设施团队现在用什么来代替它。


📌 Docker 做对了什么?

Docker 的确改变了我们对基础设施的看法:

  • 用轻量级的容器取代虚拟机。
  • 更加轻便、可移植、快速启动。
  • 开发者能轻松地将应用“Dockerize”。
  • 简化了 CI/CD 流程。
  • Kubernetes 早期默认采用 Docker 作为容器运行时。

在 2013 到 2018 年之间,这种容器化模式确实非常成功。

但后来,问题逐渐暴露。


📌 Docker 究竟出了什么问题?

1. Docker Daemon 问题严重

Docker 依赖一个长期运行的单一进程:Docker Daemon,意味着:

  • 单点故障。
  • 以 root 权限运行,潜在安全风险高。
  • 调试 daemon 极为困难,进程一旦出问题就全部瘫痪。

相比之下,其他方案如 containerd 或 CRI-O 并不需要这样一个中心化的守护进程,速度更快,权限更低:

# Docker 传统方式运行
docker run nginx

# containerd 运行(更简单、更安全)
ctr run --rm docker.io/library/nginx:latest nginx /bin/sh

2. Docker Desktop 收费问题

Docker 在企业环境对 Docker Desktop 开始收费,这一决定让大量开发者措手不及:

  • 企业团队纷纷寻找其他方案,如 PodmanRancher Desktop 或 Colima
  • 开发者极其不喜欢工具链中的突发变化。

3. Kubernetes 已放弃 Docker

注意:Kubernetes 并未放弃容器技术,而是放弃了 Docker 作为运行时。

现在,Kubernetes 主推的是支持 CRI 接口的原生容器运行时,如 containerd 和 CRI-O

容器运行时变化前后的 Kubernetes 容器生命周期:

+------------------+                 +------------------+
|  kubelet         |                 |  kubelet         |
+--------+---------+                 +--------+---------+
         |                                  |
+--------v----------+               +-------v-----------+
|  Docker Daemon    |               | containerd/CRI-O  |
+--------+----------+               +-------+-----------+
         |                                  |
    +----v-----+                      +-----v-----+
    | container|                      | container |
    +----------+                      +-----------+

Docker 因为缺乏原生 CRI 支持,导致引入额外的 shim 层,增加复杂度。


4. Podman 已经优于 Docker(多数场景)

Podman 几乎能无缝替代 Docker,并且更优秀:

  • 无 Daemon 进程
  • 可非 root 用户运行
  • Docker 命令完全兼容



    
# Docker 命令
docker build -t my-app .

# Podman 命令(完全一样)
podman build -t my-app .

你甚至可以直接 alias:

alias docker=podman

开发者几乎不会察觉区别,而 Podman 更快、更安全。


📌 Docker 之后,你该用什么替代?

下面这些方案值得你立刻切换:

场景
推荐工具
特点
本地开发环境
Podman, Colima, nerdctl
轻量、快速、免费,无需 Docker Desktop
CI/CD 流程
containerd
效率更高,与 K8s 原生集成好,无 Daemon
Kubernetes 容器运行时
CRI-O, containerd
原生 CRI,无需 shim
桌面 GUI 用户
Rancher Desktop
GUI 操作友好,无需额外付费

📌 DockerHub 怎么办?

DockerHub 仍是镜像托管的主流,但你无需再使用 Docker 来拉取镜像,可以用  skopeo 或 ctr 等工具:

skopeo copy docker://nginx:latest dir:/tmp/nginx

📌 一个真实的迁移案例

我们团队原本使用 Docker 和 Docker Compose 本地开发微服务。但出现了问题:

  • 开发环境不一致
  • CI 构建耗时太长
  • Docker Desktop 许可证问题

于是我们进行了如下迁移:

  • Docker Compose → podman-compose
  • Docker → nerdctl + containerd(CI 环境)
  • Docker Desktop → Rancher Desktop(有 GUI 需求成员)

迁移后结果:

  • CI 构建提速了 30%
  • 许可证问题归零
  • 团队迁移到 Podman 零成本,无摩擦

📌 总结

Docker 并非彻底“死亡”,它只是逐渐失去必要性。

就像曾经的 jQuery,它解决了特定历史时期的问题,而如今已有更优秀的方案出现。

如果到 2025 年你还默认用 Docker,请问自己:

“Docker 真能帮到我,还是我只是习惯了它?”

也许,是时候尝试新的、更现代化的容器工具链了。

前端AI·探索:涵盖动效、React Hooks、Vue 技巧、LLM 应用、Python 脚本等专栏,案例驱动实战学习,点击二维码了解更多详情。

图片


最后:
深入React:从基础到最佳实践完整攻略
python 技巧精讲
React Hook 深入浅出
CSS技巧与案例详解
vue2与vue3技巧合集



Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/185267
 
67 次点击