Docker 已成過去式,是時(shí)候向前看了
Docker 曾經(jīng)是 DevOps 的代名詞,風(fēng)光了近十年。
但時(shí)代變了。到了 2025 年,如果還在把 Docker 當(dāng)成萬能藥,那你就該好好審視一下現(xiàn)狀了。
這篇文章不是為了吐槽 Docker,而是實(shí)事求是地告訴你 Docker 為什么已經(jīng)逐漸淡出舞臺(tái),以及現(xiàn)代基礎(chǔ)設(shè)施團(tuán)隊(duì)現(xiàn)在用什么來代替它。
Docker 做對(duì)了什么?
Docker 的確改變了我們對(duì)基礎(chǔ)設(shè)施的看法:
- 用輕量級(jí)的容器取代虛擬機(jī)。
- 更加輕便、可移植、快速啟動(dòng)。
- 開發(fā)者能輕松地將應(yīng)用“Dockerize”。
- 簡化了 CI/CD 流程。
- Kubernetes 早期默認(rèn)采用 Docker 作為容器運(yùn)行時(shí)。
在 2013 到 2018 年之間,這種容器化模式確實(shí)非常成功。
但后來,問題逐漸暴露。
Docker 究竟出了什么問題?
1. Docker Daemon 問題嚴(yán)重
Docker 依賴一個(gè)長期運(yùn)行的單一進(jìn)程:Docker Daemon,意味著:
- 單點(diǎn)故障。
- 以 root 權(quán)限運(yùn)行,潛在安全風(fēng)險(xiǎn)高。
- 調(diào)試 daemon 極為困難,進(jìn)程一旦出問題就全部癱瘓。
相比之下,其他方案如 containerd 或 CRI-O 并不需要這樣一個(gè)中心化的守護(hù)進(jìn)程,速度更快,權(quán)限更低:
# Docker 傳統(tǒng)方式運(yùn)行
docker run nginx
# containerd 運(yùn)行(更簡單、更安全)
ctr run --rm docker.io/library/nginx:latest nginx /bin/sh2. Docker Desktop 收費(fèi)問題
Docker 在企業(yè)環(huán)境對(duì) Docker Desktop 開始收費(fèi),這一決定讓大量開發(fā)者措手不及:
- 企業(yè)團(tuán)隊(duì)紛紛尋找其他方案,如 Podman、Rancher Desktop 或 Colima。
- 開發(fā)者極其不喜歡工具鏈中的突發(fā)變化。
3. Kubernetes 已放棄 Docker
注意:Kubernetes 并未放棄容器技術(shù),而是放棄了 Docker 作為運(yùn)行時(shí)。
現(xiàn)在,Kubernetes 主推的是支持 CRI 接口的原生容器運(yùn)行時(shí),如 containerd 和 CRI-O。
容器運(yùn)行時(shí)變化前后的 Kubernetes 容器生命周期:
+------------------+ +------------------+
| kubelet | | kubelet |
+--------+---------+ +--------+---------+
| |
+--------v----------+ +-------v-----------+
| Docker Daemon | | containerd/CRI-O |
+--------+----------+ +-------+-----------+
| |
+----v-----+ +-----v-----+
| container| | container |
+----------+ +-----------+Docker 因?yàn)槿狈υ?CRI 支持,導(dǎo)致引入額外的 shim 層,增加復(fù)雜度。
4. Podman 已經(jīng)優(yōu)于 Docker(多數(shù)場(chǎng)景)
Podman 幾乎能無縫替代 Docker,并且更優(yōu)秀:
- 無 Daemon 進(jìn)程
- 可非 root 用戶運(yùn)行
- Docker 命令完全兼容
# Docker 命令
docker build -t my-app .
# Podman 命令(完全一樣)
podman build -t my-app .你甚至可以直接 alias:
alias docker=podman開發(fā)者幾乎不會(huì)察覺區(qū)別,而 Podman 更快、更安全。
Docker 之后,你該用什么替代?
下面這些方案值得你立刻切換:
場(chǎng)景 | 推薦工具 | 特點(diǎn) |
本地開發(fā)環(huán)境 | Podman, Colima, nerdctl | 輕量、快速、免費(fèi),無需 Docker Desktop |
CI/CD 流程 | containerd | 效率更高,與 K8s 原生集成好,無 Daemon |
Kubernetes 容器運(yùn)行時(shí) | CRI-O, containerd | 原生 CRI,無需 shim |
桌面 GUI 用戶 | Rancher Desktop | GUI 操作友好,無需額外付費(fèi) |
DockerHub 怎么辦?
DockerHub 仍是鏡像托管的主流,但你無需再使用 Docker 來拉取鏡像,可以用 skopeo 或 ctr 等工具:
skopeo copy docker://nginx:latest dir:/tmp/nginx一個(gè)真實(shí)的遷移案例
我們團(tuán)隊(duì)原本使用 Docker 和 Docker Compose 本地開發(fā)微服務(wù)。但出現(xiàn)了問題:
- 開發(fā)環(huán)境不一致
- CI 構(gòu)建耗時(shí)太長
- Docker Desktop 許可證問題
于是我們進(jìn)行了如下遷移:
- Docker Compose → podman-compose
- Docker → nerdctl + containerd(CI 環(huán)境)
- Docker Desktop → Rancher Desktop(有 GUI 需求成員)
遷移后結(jié)果:
- CI 構(gòu)建提速了 30%
- 許可證問題歸零
- 團(tuán)隊(duì)遷移到 Podman 零成本,無摩擦
總結(jié)
Docker 并非徹底“死亡”,它只是逐漸失去必要性。
就像曾經(jīng)的 jQuery,它解決了特定歷史時(shí)期的問題,而如今已有更優(yōu)秀的方案出現(xiàn)。
如果到 2025 年你還默認(rèn)用 Docker,請(qǐng)問自己:
“Docker 真能幫到我,還是我只是習(xí)慣了它?”
也許,是時(shí)候嘗試新的、更現(xiàn)代化的容器工具鏈了。



























