編按:本文綜合整理自 Podman 官方部落格 與 LWN.net 技術分析、Fedora Changes Wiki,並加入 Siami 編輯部觀點與分析。
Podman 團隊正式釋出 v6.0.0,這是繼 v4 全面換上 Netavark 之後,另一個具分水嶺意義的主版本。整個專案歷時多月,把核心網路層、設定檔儲存、Quadlet 整合與 Docker 相容性一次翻新到位。
六大重點一次看
這次釋出的官方公告把改動濃縮成六大塊。每一條都對應到一個「過去長期被抱怨的痛點」:
- 現代化網路層:從
slirp4netns與iptables全面轉向Netavark+Pasta+nftables。Pasta 是從 Podman 5.3 之後就預設的 rootless 網路後端,這次把 fallback 路徑也清乾淨。實驗性的Pestorootless port forwarding 加入了保留來源 IP 的支援。 - Podman Machine 多供應商體驗:原本切換 QEMU / Apple Hypervisor / WSL 要重做設定,現在統一抽象;同時新增
podman machine os update指令,VM 環境可直接升級,不必砍掉重來。 - Quadlet 大改版:新增 REST API、追蹤關聯檔案、
.volumeunit 功能擴充、新的搜尋路徑讓套件打包更容易。這代表用 Quadlet 部署 systemd unit 的開發者終於可以用程式查狀態。 - 設定檔儲存改寫:拋棄 BoltDB,重寫整個
containers.conf處理流程。多用戶管理環境變得更穩定,但對既有 5.x 部署是破壞性變更。 - Docker 相容性強化:Docker API 持續對齊、CLI 輸出更貼近 Docker 習慣。對「想從 Docker 跳槽但怕指令不通」的團隊是利多。
- 多張靜態 IP:容器可以透過
--net mynet:ip=10.0.0.2,ip=10.0.0.3同時綁多個 IP。這對 dual-homed service、IPv4/IPv6 雙協定、Kubernetes 風格的多介面 pod 是基本要求。
為什麼這件事重要
Podman 的策略一直是「drop-in Docker replacement,但不要 daemon」。要做到這一點,網路、儲存、systemd 整合都得自己寫一整套。v6 等於把 2022 年開始累積的技術債一次清掉:
對 Red Hat / Fedora 生態:RHEL 9.5 已經把 Pasta 預設成 rootless 網路,Fedora 的 Changes/Podman6 wiki 把「拿掉 slirp4netns / cgroups v1 / BoltDB」列為 Fedora 41+ 的 base requirement。升級路徑已經從「實驗性」變成「企業預設」。
對開發者:Docker 的桌面體驗仍然是業界標竿,但 Docker 公司商業化後,開源社群一直在尋找「真正自由」的替代方案。Podman v6 把 CLI 相容性推到極致,技術上「拒用 Docker」的成本越來越低。
對企業 IT:無 daemon 架構在多使用者環境、CIS Benchmark、Kubernetes 邊緣節點這些場景是真正的安全加分。v6 把設定檔儲存重寫,等於把這個優勢制度化。
數據解讀與質疑
雖然官方公告措辭正面,但有幾個面向值得追問:
- 「現代化網路層」其實是技術債清理。從 iptables 換到 nftables 不是新功能,是因為 iptables 在大型 container farm 上效能不夠。Fedora Changes 文件指出 nftables 可以「批次插入規則」,這代表 v5 之前在大規模部署上其實有效能瓶頸,只是過去沒量化數據。
- 設定檔重寫 = 升級風險。Reddit r/podman 上已經有人反應 5.7.x / 5.8.x 升到 6.0 要對 release notes 對好幾次
containers.conf。LWN 也明確指出「There are many breaking changes」。對 production 環境,這是預期外的維運成本。 - Docker 相容性強化 ≠ 100% 相容。社群實測顯示還是有少數 compose 語法、volume mount 行為有差異。「跳槽成本」對小型團隊接近零,對大型 monorepo 仍要逐項驗證。
- Quadlet REST API 是「systemd 整合的最後一塊拼圖」。過去 Quadlet 部署後只能用
systemctl status查;現在程式可以直接拉狀態,這代表 K8s-style 的 controller、GitOps 工具、自家監控可以乾淨地接進來。
升級前要先確認的事
如果你正在 production 用 Podman 5.x,這幾件事建議在升級前先做完:
- 備份所有
containers.conf、containers.conf.d/、~/.config/containers/:v6 重寫設定檔處理,舊設定不會自動 migrate。 - 確認相依套件版本:
Buildah v1.44.0、Skopeo v1.23、Netavark/Aardvark v2.0.0是必要的搭配版本。 - 檢查 rootless 網路行為:如果你之前依賴
slirp4netns的某些行為(例如tap0介面名),Pasta 用 host 的介面名會讓 firewall rule 寫法要改。 - Quadlet unit 跑一次
podman quadlet --user list:v6 的搜尋路徑與關聯檔案追蹤改過,舊路徑的 unit 可能不會被自動撿到。 - CI/CD 鏡像 rebuild:如果用 Buildah 在 CI 組 image,升級到對應的 Buildah v1.44 才能確保 ABI 相容。
Siami 觀點
Podman v6 不是「下一個小改版」,而是 Red Hat 把容器工具鏈「開源化、標準化、企業化」三條軸線的一次總收斂。從 Podman Desktop 到 Buildah、Skopeo、Netavark、Aardvark,整個家族在 v6 這個版本點上第一次達到「可以完全替代 Docker 工具鏈」的成熟度。
對台灣的開源社群與企業 IT 來說,這個版本的意義在於:過去三年「團隊嘗試換掉 Docker 但 PoC 失敗」的技術理由,正在一個一個被移除。剩下的只是「組織流程」與「既有投資」的問題,而這些是任何工具都解不掉的。
如果你還在猶豫要不要試 Podman,v6 是目前最安全的起點。
參考來源
網友熱門留言 (5)