Podman:Docker 的替代品?
雖然 docker 無疑徹底改變了我們開發(fā)、部署和運(yùn)行應(yīng)用程序的方式,但值得探索一下 Podman(Pod Manager)的與眾不同之處以及為什么您可能想開始使用它。
在本文中,假設(shè)每個(gè)人都已經(jīng)熟悉 Docker,我們將深入探討 podman 的核心功能。
開始吧!
(更|多優(yōu)質(zhì)內(nèi)|容:java567 點(diǎn) c0m)
## 波德曼是什么?
簡(jiǎn)單來說,Podman 是一個(gè)開源容器和 Pod 管理器。
與 docker 類似,它允許您創(chuàng)建、啟動(dòng)、停止和刪除OCI容器,以及管理容器映像,而且還支持 pod 作為其功能集的一部分,這意味著您可以像使用 Kubernetes 一樣創(chuàng)建和管理 pod。
但等等 OCI 容器?
OCI(開放容器倡議):是一個(gè)行業(yè)標(biāo)準(zhǔn)組織,旨在創(chuàng)建一套規(guī)則(規(guī)范和標(biāo)準(zhǔn)),以確保容器在不同平臺(tái)上一致工作。
那么這是什么意思 ?
這意味著 Podman 的鏡像/容器與 Docker 或任何依賴于 OCI 兼容容器運(yùn)行時(shí)的容器化技術(shù)完全兼容。
太好了,現(xiàn)在我們知道 podman 與 docker 完全兼容,但等等,它更有趣。
大多數(shù) docker 用戶可以簡(jiǎn)單地將 Docker 別名為 Podman(別名 docker=podman),不會(huì)出現(xiàn)任何問題。
這意味著除了 docker swarm 之外,所有 docker 的命令都保持不變。
您可能想知道 Podman 會(huì)帶來什么。
讓我們深入探討一下!
## 建筑學(xué)
您看得出來差別嗎 ?
Podman 的架構(gòu)是無守護(hù)進(jìn)程的。
哇,那是什么?為什么我們要嘗試擺脫舊的 docker 守護(hù)進(jìn)程?
守護(hù)進(jìn)程是在系統(tǒng)后臺(tái)運(yùn)行的進(jìn)程,它們通常在后臺(tái)連續(xù)運(yùn)行,等待某些事件或請(qǐng)求發(fā)生。
回到容器,將 docker 守護(hù)進(jìn)程視為用戶和容器本身之間通信的中介。
問題 ?
使用守護(hù)進(jìn)程來管理容器幾乎沒有問題:
單點(diǎn)故障
一旦守護(hù)進(jìn)程崩潰,所有容器都會(huì)崩潰。
需要 root 權(quán)限
這使得 docker 守護(hù)進(jìn)程成為想要控制容器并滲透主機(jī)系統(tǒng)的黑客的理想目標(biāo)。
Podman 通過直接與容器注冊(cè)表、容器和圖像存儲(chǔ)交互來解決上述挑戰(zhàn),無需守護(hù)進(jìn)程,因此采用了無守護(hù)進(jìn)程架構(gòu)。
通過無根(不需要根權(quán)限),用戶可以創(chuàng)建、運(yùn)行和管理容器,而無需具有管理員權(quán)限的進(jìn)程,從而降低了安全風(fēng)險(xiǎn)
buildah實(shí)用程序取代 docker build 作為容器映像構(gòu)建工具。同樣,skopeo取代了 docker Push,并允許容器鏡像在注冊(cè)表之間移動(dòng)。這些工具提供與必要組件的高效且直接的交互,從而無需在此過程中使用單獨(dú)的守護(hù)進(jìn)程。
我應(yīng)該重寫每個(gè) dockerfile 和 docker-compose 文件以便能夠在我現(xiàn)有的項(xiàng)目中使用 podman 嗎?
答案:絕對(duì)不是
Podman 旨在通過提供與 docker 容器文件語法的兼容性來提供熟悉的開發(fā)人員體驗(yàn)。
此外,Podman 還引入了一個(gè)名為 pod compose 的類似工具作為 docker compose 的替代品。
Pod compose 使用相同的語法,允許您使用相同的方法甚至使用現(xiàn)有的“docker-compose.yml”文件來定義和管理多容器應(yīng)用程序。
至于 Docker 桌面,Podman 還附帶 Podman 桌面,提供增強(qiáng)的功能,使其更加強(qiáng)大和簡(jiǎn)化。它提供與 Docker 和 Kubernetes 的兼容性,增強(qiáng)其功能并提供更流暢的體驗(yàn)。
您可以在其官方網(wǎng)站podman找到 Podman 的安裝指南和文檔
## 結(jié)論
鑒于 Podman 的無守護(hù)進(jìn)程架構(gòu)、與 Docker 相當(dāng)?shù)拈_發(fā)人員體驗(yàn),以及兩者都是具有蓬勃發(fā)展社區(qū)的開源項(xiàng)目這一事實(shí),與 Podman 相比,堅(jiān)持使用 Docker 并沒有顯著的優(yōu)勢(shì)。
(更|多優(yōu)質(zhì)內(nèi)|容:java567 點(diǎn) c0m)