← 返回 Siami 首頁

Podman v6.0 正式發布:全面轉向 Netavark、Pasta、nftables Quadlet 迎來 REST API

▲ 283 💬 107
Podman v6.0 正式發布:全面轉向 Netavark、Pasta、nftables Quadlet 迎來 REST API

編按:本文綜合整理自 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 路徑也清乾淨。實驗性的 Pesto rootless port forwarding 加入了保留來源 IP 的支援。
  • Podman Machine 多供應商體驗:原本切換 QEMU / Apple Hypervisor / WSL 要重做設定,現在統一抽象;同時新增 podman machine os update 指令,VM 環境可直接升級,不必砍掉重來。
  • Quadlet 大改版:新增 REST API、追蹤關聯檔案、.volume unit 功能擴充、新的搜尋路徑讓套件打包更容易。這代表用 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,這幾件事建議在升級前先做完:

  1. 備份所有 containers.conf、containers.conf.d/、~/.config/containers/:v6 重寫設定檔處理,舊設定不會自動 migrate。
  2. 確認相依套件版本:Buildah v1.44.0、Skopeo v1.23、Netavark/Aardvark v2.0.0 是必要的搭配版本。
  3. 檢查 rootless 網路行為:如果你之前依賴 slirp4netns 的某些行為(例如 tap0 介面名),Pasta 用 host 的介面名會讓 firewall rule 寫法要改。
  4. Quadlet unit 跑一次 podman quadlet --user list:v6 的搜尋路徑與關聯檔案追蹤改過,舊路徑的 unit 可能不會被自動撿到。
  5. 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)

#1 mjburgess ▲ 187
Sanctuary!(看到 Podman 6 預設全面換成 Netavark + Pasta + nftables,rootless port forwarding 終於能保留正確來源 IP)
#2 Hacker News 用戶 ▲ 124
終於等到 Quadlet REST API,可以直接從 Podman 程式化查詢 systemd 服務狀態,不用再 wrap systemctl
#3 Hacker News 用戶 ▲ 98
設定檔從 BoltDB 改寫了,5.x 的 containers.conf 很多選項位置都搬了,升級前要仔細對一次 release notes
#4 Hacker News 用戶 ▲ 76
感謝 v6 預設拿掉 slirp4netns、cgroups v1 跟 BoltDB,整個技術債一次清乾淨,後續維護會輕鬆很多
#5 Hacker News 用戶 ▲ 54
podman machine os update 指令對 macOS / Windows 開發者很實用,VM 環境終於不用砍掉重來了