Podman v6.0.0 版本說明

Podman v6.0.0 版本說明

Podman v6.0.0 是一次重大的發行,重點在於現代化核心基礎設施、提升安全性,以及精緻使用者體驗。此更新將網路堆疊轉向 Netavark、Pasta 與 nftables,同時擴充 Quadlet 與 Podman Machine 的功能。

現代化的網路堆疊

Podman v6.0.0 透過拋棄 slirp4netnsiptables,改以 NetavarkPastanftables 為主,簡化了維護工作,並為未來的網路功能開發鋪路。

此外,此版本還加入了 Pesto rootless port forwarding 的實驗性支援。此功能專為在自訂網路上執行的 rootless 容器保留正確的來源 IP,解決了 rootless 容器網路常見的限制。

Quadlet 演進與 Systemd 整合

Quadlet 進行了重大改寫,以改善容器作為 systemd 服務的管理。主要改進包括:

  • REST API 支援: Quadlet 現在加入了 REST API,以便更好的程式化管理。
  • 增強的 Volume 管理: .volume 單元的功能擴充,讓容器卷的控制更精確。
  • 發行套件化: 新增了搜尋路徑,使得將 Quadlet 打包發行更為容易。
  • 改進的追蹤: 更好的關聯檔案追蹤,簡化容器生命週期的管理。

社群成員指出,Quadlet 與 rootless 容器是從 Docker 遷移到 Podman 的主要驅動因素,因為它們能在如 RockyLinux 等系統上透過 Ansible 與 SystemD 主機容器,且不需要守護進程。

加強的 Podman Machine 與相容性

Podman Machine 現在提供更順暢的多供應商體驗,讓在不同 VM 供應商之間的切換更為簡易。新增了 podman machine os update 指令,以保持 VM 環境的最新狀態。

為了進一步降低 Docker 使用者的遷移門檻,Podman v6.0.0 包含了更新的 Docker API 支援,並優化了指令輸出,以提升整體相容性。

設定與系統遷移

Podman 已更新其設定檔處理方式,為管理多使用者環境的系統管理員提供更可靠的體驗。

從系統層面來看,此發行包含了資料庫的遷移路徑。升級至 Podman v6.0.0 的使用者,其資料庫將自動遷移至 SQLite,解決了先前與 Bolt DB 相關的棄用警告。

社群觀點與取捨

雖然此版本因技術進步受到歡迎,但社群討論中也顯示出關於從 Docker 轉移的若干爭議點:

  • Docker 相容性: 有些使用者回報,雖然 Podman 目標是 Docker 相容,但仍存在一些小差異,可能會對使用 Docker 為基礎的專案造成問題。

"我不喜歡 Podman 的地方在於,它假裝與 Docker 相容,卻有一些小差異最終會咬你。"

  • 生態系鎖定: 使用以 Docker 為中心的部署工具(如 Coolify)的使用者,仍因這些相依性被鎖定在 Docker 生態系。

  • 安全性與無守護程式架構: Podman 的支持者強調,不需要 root 守護程式以及避免 Docker 常見的 "docker group" 權限問題,帶來的安全性好處。

"我最看重的原因是我偏好 podman… 沒有 'container root' / 'docker group' = 'host root' 的把戲,podman 不會噴出垃圾並在我的防火牆 (iptables) 上打洞。"

  • 開發工作流程: 有些開發者質疑 Podman 的方法相較於 Docker Compose 的可移植性,認為 Compose 的單檔可移植性對於團隊開發與可重現性更為優越。

Sources