Docker 與 Podman 容器管理的比較


翻譯自 Paul Ferrill 2020年9月1日的文章《Compare Docker vs. Podman for container management》 [1]

Docker 和 Podman 在管理容器方面提供了類似的功能,但是 Docker 的安全漏洞可能使 Podman 對於某些管理員來說更具吸引力。

docker vs podman

目前 Docker 已經成為許多 IT 管理員們事實上的標准,並且在開發人員中占有很大的份額。 但是,Podman 由於具有以非特權用戶身份運行且無需守護進程的能力,因此與基本的 Docker 相比,它為管理員們提供了一些安全上的優勢。

Docker 和 Podman 都提供許多相同的功能,例如,它們對開放式容器倡議(OCI)[2] 的運行時和鏡像規范的支持,以及它們映射命令以創建和管理容器的能力。 但是,Docker 和 Podman 之間存在一些差異,包括安全方面的問題和對守護程序的依賴。[3]

考慮到 Podman 不使用守護進程來開發、管理和運行 OCI 容器,因此它必須在 Linux OS 上運行。 容器可以以 root 模式運行,也可以以非 root 運行模式運行。Docker 利用一個守護進程(該守護進程是一個持久的后台進程)來處理主機上所有容器的管理職責。Docker 依賴於客戶端/服務端(C/S)架構,守護進程扮演着服務端的角色,而客戶端通過命令行界面(CLI)進行通信。

Docker 使用本機 Windows 守護進程就可以很好地運行 Windows 或基於 Linux 的鏡像。Podman 需要 Windows Subsystem for Linux 版本2(WSL2)才能正常運行。 因此,管理員們必須有2020年5月以后的 Windows 10 更新才能開始使用 Podman,因為這是第一個將 WSL2 作為更新的一部分的發行版。

安全

Docker 與 Podman 之間的一個重大區別涉及到安全問題。 Docker 守護進程需要 root 權限,這在向用戶提供 root 權限時帶來了安全挑戰。 這也意味着配置不當的 Docker 容器可以無限制地訪問主機文件系統。管理員可以通過遵循一些基本的最佳實踐來防止這種情況發生,比如僅使用來自受信任的供應商提供的容器鏡像,但這種可能性仍然存在。

但是,管理員們使用 Podman 可以以非特權用戶啟動容器。這就使得 Podman 在鎖定環境場景中具有了超越 Docker 的優勢。 話雖如此,管理員們將無法以非特權用戶身份在主機系統上執行任何需要 root 權限的命令。這包括映射主機上低於 1024 的任何特權端口號,以及默認的 HTTP 端口號 80。

此外,Docker 和 Podman 都使用 CLI 作為主要管理界面。但是,Docker 使用 REST API 終端與守護進程進行通信,且較舊的版本使用綁定到本機 IP 地址的 TCP socket 通信。這為跨站偽造利用提供了一個潛在的攻擊面。Docker 在 0.5.2 版本中通過引入 UNIX socket 解決了這個漏洞(管理員可以使用傳統的 UNIX 權限進行控制,以限制訪問)。考慮到 Podman 不依賴守護進程,因此不易受到此類攻擊的影響。

容器編排

在容器編排方面,Kubernetes 已經成為占據主導地位的參與者。VMware 已采用 Kubernetes 作為 VM 以及連接到運行中的容器的所有其他設備的主要管理平台。 Kubernetes 使用術語 pod 來定義共享某些資源的容器集合。Podman 通過實現 pod 命令,將多個容器作為一個實體進行管理,從而支持相同的概念。

同樣,Docker 為容器編排提供了多個選項。Docker Swarm 是 Docker 維護的用於管理集群的本地工具。Docker 還與 Kubernetes 集成得很好,這是大多數開發團隊的主流選擇。 對於 Windows 部署,管理員可以選擇在安裝過程中啟用 Kubernetes,從而可以從管理員的台式機或筆記本電腦直接訪問 Kubernetes 命令。

更進一步來說,管理員可以圍繞持續集成和持續部署(CI/CD)模型構建他們的應用程序,在該模型中,開發和測試工作可以基於一些簡單的配置文件在任何地方進行。當管理員准備將發布推送到生產環境時,只需執行幾個額外的步驟即可更改部署目標。

Podman 和 Docker 都符合 OCI 鏡像標准,但僅就安全特性而言,Podman 是值得一試的。Podman 還提供了本地命令來支持 pod 的構建和測試,從而着眼於部署到一個運行 Kubernetes 的生產系統中。


作者 : Paul Ferrill
譯者 : 技術譯民
出品 : 技術譯站
鏈接 : 英文原文


  1. https://searchservervirtualization.techtarget.com/tip/Compare-Docker-vs-Podman-for-container-management Compare Docker vs. Podman for container management ↩︎

  2. https://opencontainers.org/ OCI ↩︎

  3. https://www.cnblogs.com/ittranslator/p/14057822.html Docker Vs Podman ↩︎


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM