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

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

容器編排工具作為當(dāng)今最重要的Web開發(fā)技術(shù)之一,眾多強(qiá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?這是因為使用Docker Daemon運(yùn)行Docker有以下這些問題:

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

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

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

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

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

1. Docker什么?

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

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

Docker也在很短的時間內(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是一個強(qiáng)大的系統(tǒng),但這種自給自足的模式也有它的缺點。雖然可以在開發(fā)的所有階段創(chuàng)建和運(yùn)行容器,但其他工具在與Docker集成交互時或多或少存在些困難。

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

2 . Podman是什么?

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

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

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

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

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

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

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

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

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

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

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

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

(1) 架構(gòu)

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

(2) Root特權(quán)

由于Podman沒有守護(hù)進(jìn)程來管理其活動,也無需為其容器分配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)限,這使得它們易成為攻擊者的選入侵點。

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

(4) Systemd

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

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

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

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

(6) Docker Swarm

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

(7) All in one vs 模塊化

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

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

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

Podman會是Docker的替代品嗎?

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

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

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

分享題目:Podman是什么?和Docker有啥區(qū)別?
轉(zhuǎn)載源于:http://www.muchs.cn/news/204853.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供虛擬主機(jī)、ChatGPT、Google、軟件開發(fā)、網(wǎng)站制作、微信公眾號

廣告

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

商城網(wǎng)站建設(shè)