Podman是什么?和Docker有啥區(qū)別?

2022-10-12    分類: 網(wǎng)站建設(shè)

容器編排工具作為當(dāng)今最重要的Web開發(fā)技術(shù)之一,眾多強(qiáng)者都在嘗試爭(zhēng)奪這一行業(yè)的主導(dǎo)地位。

Podman是RedHat的一款產(chǎn)品,旨在使用類似于Kubernetes的方法來構(gòu)建、管理和運(yùn)行容器,作為一款主流容器的可靠替代產(chǎn)品,它吸引了開發(fā)人員的關(guān)注。自RHEL 8起,Red Hat用CRI-O/Podman取代了Docker Daemon。為什么Red Hat想要擺脫Docker Daemon?這是因?yàn)槭褂肈ocker Daemon運(yùn)行Docker有以下這些問題:

單點(diǎn)故障問題,Docker Daemon一旦死亡,所有容器都將死亡 Docker Daemon擁有運(yùn)行中的容器的所有子進(jìn)程 所有Docker操作都必須由具有跟root相同權(quán)限的用戶執(zhí)行 構(gòu)建容器時(shí)可能會(huì)導(dǎo)致安全漏洞

Podman通過直接與Image Registry、Image和Container進(jìn)行互動(dòng),而不是通過守護(hù)進(jìn)程來解決以上問題。此外,Podman還允許用戶在沒有完全root 權(quán)限的情況下運(yùn)行容器。

更棒的是,它還提供了與Docker兼容的指令,使用戶可以很輕易的從原本的Docker指令切換到Podman。

Podman是什么?和Docker有啥區(qū)別?

Podman和Docker這兩種標(biāo)準(zhǔn)的容器化工具已經(jīng)有近十年的歷史了,今天這篇文章我們來對(duì)比下這兩個(gè)技術(shù),它們雖有不同,但還是非常適合一起使用。

1. Docker什么?

Docker是標(biāo)準(zhǔn)的容器管理技術(shù)。Docker在行業(yè)中舉足輕重,以至于大多數(shù)人一想到容器,就會(huì)想到Docker。

Docker是容器編排世界的一把瑞士軍刀,在其他替代方案出現(xiàn)之前就已經(jīng)提供了諸多特性。隨著容器管理復(fù)雜度的增加,它也必須成長(zhǎng)為一個(gè)獨(dú)立的、自給自足的工具,以便能提供開發(fā)人員的所有需求。

Docker也在很短的時(shí)間內(nèi),就成為All-in-one解決方案的關(guān)鍵工具之一。其中一款就是Docker Swarm,這是一款由Docker原生的,可以讓你組建群集和調(diào)度Docker引擎,以及用來創(chuàng)建和管理容器群的解決方案。

Docker的諸多輔助工具處理所有與容器編排相關(guān)的任務(wù),從負(fù)載均衡到網(wǎng)絡(luò),使其成為行業(yè)的選,不光是作為行業(yè)技術(shù)參考。

盡管Docker是一個(gè)強(qiáng)大的系統(tǒng),但這種自給自足的模式也有它的缺點(diǎn)。雖然可以在開發(fā)的所有階段創(chuàng)建和運(yùn)行容器,但其他工具在與Docker集成交互時(shí)或多或少存在些困難。

近年來,隨著許多其他用于特定任務(wù)的專用工具的出現(xiàn),Docker成為許多開發(fā)人員的起點(diǎn),隨之,他們將一些任務(wù)分配給其他更輕量級(jí)的平臺(tái)和工具。

2 . Podman是什么?

Podman是一種開源的Linux原生工具,旨在根據(jù)開放容器倡議(Open Container Initiative,OCI)標(biāo)準(zhǔn)開發(fā)、管理和運(yùn)行容器和Pod。Podman是RedHat開發(fā)的一個(gè)用戶友好的容器調(diào)度器,是RedHat 8和CentOS 8中默認(rèn)的容器引擎。

它是一款集合了命令集的工具,設(shè)計(jì)初衷是為了處理容器化進(jìn)程的不同任務(wù),可以作為一個(gè)模塊化框架工作。它的工具集包括:

Podman:Pod和容器鏡像管理器 Buildah:容器鏡像生成器 Skopeo:容器鏡像檢查管理器 Runc:容器運(yùn)行器和特性構(gòu)建器,并傳遞給Podman和Buildah Crun:可選運(yùn)行時(shí),為Rootless容器提供更大的靈活性、控制和安全性

這些工具還可以與任何OCI兼容的容器引擎(如Docker)一起工作,使其易于轉(zhuǎn)換到Podman或與現(xiàn)有的Docker安裝一起使用。Kubernetes可以使用Podman嗎?答案是:是的。事實(shí)上,Kubernetes和Podman在某些方面是相似的。

Podman對(duì)于容器有著不同的方法論。正如它的名字所暗示的那樣,Podman可以創(chuàng)建一起工作的容器“Pod”,這是一個(gè)類似Kubernetes里Pod的特性。Pod在一個(gè)共同的命名空間里,作為一個(gè)單元來管理容器。

比較主要的好處是開發(fā)人員可以共享資源,在一個(gè)Pod中為同一個(gè)應(yīng)用程序使用不同的容器:一個(gè)容器用于前端,另一個(gè)容器用于后端,還有一個(gè)數(shù)據(jù)庫。Pod的配置可以導(dǎo)到Kubernetes兼容的YAML文件,并應(yīng)用到Kubernetes集群中,從而允許容器更快地進(jìn)入生產(chǎn)。

Podman的另一個(gè)特性是它是無守護(hù)進(jìn)程的。守護(hù)進(jìn)程是在后臺(tái)運(yùn)行的程序,它處理服務(wù)、進(jìn)程和請(qǐng)求,沒有用戶界面。Podman是一種獨(dú)特的容器引擎,因?yàn)樗鼘?shí)際上并不依賴于守護(hù)進(jìn)程,而是作為子進(jìn)程啟動(dòng)容器和Pod。

你可能會(huì)問:“我為什么要使用Podman?”作為一種開發(fā)和管理工具,Podman具有獨(dú)特的優(yōu)勢(shì),這使得它在適當(dāng)?shù)沫h(huán)境中成為Docker的可行和有趣的替代品?;蛘咭粋€(gè)與Docker并肩工作的強(qiáng)大補(bǔ)充,因?yàn)樗С峙cDocker兼容的CLI接口。

3 . Podman vs Docker:區(qū)別

Podman和Docker有許多共同的特性,但也有一些根本的區(qū)別。技術(shù)不分好壞,只是著重于哪個(gè)更適用于某些特定的場(chǎng)景。

Podman是什么?和Docker有啥區(qū)別?

Podman與Linux內(nèi)核交互,通過runC容器運(yùn)行時(shí)進(jìn)程而不是Daemon來管理容器。Buildah實(shí)用程序用于替代Docker build作為容器鏡像構(gòu)建工具,Docker push被Skopeo替代,用于在注冊(cè)表和容器引擎之間移動(dòng)容器鏡像。

(1) 架構(gòu)

Docker使用守護(hù)進(jìn)程,一個(gè)正在后臺(tái)運(yùn)行的程序,來創(chuàng)建鏡像和運(yùn)行容器。Podman是無守護(hù)進(jìn)程的架構(gòu),這意味著它可以在啟動(dòng)容器的用戶下運(yùn)行容器。Docker有一個(gè)由守護(hù)進(jìn)程引導(dǎo)的客戶端——服務(wù)器邏輯架構(gòu);但Podman不需要此類守護(hù)進(jìn)程。

(2) Root特權(quán)

由于Podman沒有守護(hù)進(jìn)程來管理其活動(dòng),也無需為其容器分配Root特權(quán)。Docker最近在其守護(hù)進(jìn)程配置中添加了Rootless模式,但Podman首先使用了這種方法,并將其作為基本特性進(jìn)行了推廣。原因如下。

(3) 安全

Podman比Docker安全嗎?Podman允許容器使用Rootless特權(quán)。Rootless容器被認(rèn)為比Root特權(quán)的容器更安全。在Docker中,守護(hù)進(jìn)程擁有Root權(quán)限,這使得它們易成為攻擊者的選入侵點(diǎn)。

Podman中的容器默認(rèn)情況下不具有Root訪問權(quán)限,這在Root級(jí)別和Rootless級(jí)別之間添加了一個(gè)自然屏障,提高了安全性。不過,Podman可以同時(shí)運(yùn)行Root容器和Rootless容器。

(4) Systemd

如果沒有守護(hù)進(jìn)程,Podman需要另一個(gè)工具來管理服務(wù)并支持后臺(tái)運(yùn)行的容器。Systemd為現(xiàn)有容器創(chuàng)建控制單元或用來生成新容器。Systemd還可以與Podman集成,允許它在默認(rèn)情況下運(yùn)行啟用了Systemd的容器,從而無需進(jìn)行任何修改。

通過使用Systemd,供應(yīng)商可以將他們的應(yīng)用程序封裝為容器用來安裝、運(yùn)行和管理,因?yàn)楝F(xiàn)在大多數(shù)應(yīng)用程序都是通過這種方式打包和交付的。

(5) 構(gòu)建鏡像

作為一款自給自足的工具,Docker可以自己構(gòu)建容器鏡像。Podman則需要另一種名為Buildah的工具的輔助,該工具充分體現(xiàn)了它的特殊性:它是為構(gòu)建鏡像而設(shè)計(jì)的,而不是為構(gòu)建容器而生。

(6) Docker Swarm

Podman不支持Docker Swarm,這可能會(huì)在某些項(xiàng)目中被刨除在外,因?yàn)槭褂肈ocker Swarm命令會(huì)產(chǎn)生一個(gè)錯(cuò)誤。然而,Podman最近增加了對(duì)Docker Compose的支持,使其與Swarm兼容,從而克服了這個(gè)限制。當(dāng)然,Docker由于其原生的特性,與Swarm當(dāng)然融合得很好。

(7) All in one vs 模塊化

也許這就是這兩種技術(shù)的關(guān)鍵區(qū)別:Docker是一個(gè)獨(dú)立的、強(qiáng)大的工具,在整個(gè)循環(huán)中處理所有的容器化任務(wù),有優(yōu)點(diǎn)也有缺點(diǎn)。Podman采用模塊化的方法,依靠專門的工具來完成特定的任務(wù)。

4 . Podman vs Docker:他們能合作嗎?

作為最好的、最易應(yīng)用于Docker的替代方案——用戶可以將Docker別名設(shè)置為Podman(別名Docker=Podman),且不會(huì)出現(xiàn)任何問題,正如本演示[1]中所示——Podman是一個(gè)非常強(qiáng)大的容器化任務(wù)工具。

Podman會(huì)是Docker的替代品嗎?

如果你要從頭開始一個(gè)項(xiàng)目,Podman可以是一個(gè)首要的容器化技術(shù)選項(xiàng)。如果項(xiàng)目正在進(jìn)行,并且已經(jīng)在使用Docker,這還需要具體情況具體分析,實(shí)際情況并不一定值得去改。而且作為一款Linux原生的應(yīng)用,它要求相關(guān)開發(fā)人員具備Linux的相關(guān)技能。

開發(fā)人員可以在開發(fā)階段依賴Docker,然后在運(yùn)行時(shí)環(huán)境中將項(xiàng)目推向Podman,從而結(jié)合使用這兩種工具,并受益于Podman所提供的更安全性。由于它們都是OCI兼容的,因此,兼容性不是個(gè)問題。

Docker和Podman能共存嗎?是的,而且會(huì)很好。許多開發(fā)人員一直在合用Docker和Podman來創(chuàng)建更安全、更高效、更敏捷的框架。它們有很多共同之處,無論是從Docker到Podman的轉(zhuǎn)變,亦或是二者合并使用,都可以做到無縫銜接。

本文名稱:Podman是什么?和Docker有啥區(qū)別?
網(wǎng)頁地址:http://www.bm7419.com/news3/204853.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供建站公司做網(wǎng)站、企業(yè)建站全網(wǎng)營(yíng)銷推廣、定制開發(fā)、自適應(yīng)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁設(shè)計(jì)