2022-10-12 分類: 網(wǎng)站建設(shè)
容器編排工具作為當(dāng)今最重要的Web開發(fā)技術(shù)之一,眾多強(qiáng)者都在嘗試爭(zhēng)奪這一行業(yè)的主導(dǎo)地位。
Podman是RedHat的一款產(chǎn)品,旨在使用類似于Kubernetes的方法來(lái)構(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有以下這些問(wèn)題:
單點(diǎn)故障問(wèn)題,Docker Daemon一旦死亡,所有容器都將死亡 Docker Daemon擁有運(yùn)行中的容器的所有子進(jìn)程 所有Docker操作都必須由具有跟root相同權(quán)限的用戶執(zhí)行 構(gòu)建容器時(shí)可能會(huì)導(dǎo)致安全漏洞Podman通過(guò)直接與Image Registry、Image和Container進(jìn)行互動(dòng),而不是通過(guò)守護(hù)進(jìn)程來(lái)解決以上問(wèn)題。此外,Podman還允許用戶在沒(méi)有完全root 權(quán)限的情況下運(yùn)行容器。
更棒的是,它還提供了與Docker兼容的指令,使用戶可以很輕易的從原本的Docker指令切換到Podman。
Podman和Docker這兩種標(biāo)準(zhǔn)的容器化工具已經(jīng)有近十年的歷史了,今天這篇文章我們來(lái)對(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引擎,以及用來(lái)創(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í)或多或少存在些困難。
近年來(lái),隨著許多其他用于特定任務(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è)單元來(lái)管理容器。
比較主要的好處是開發(fā)人員可以共享資源,在一個(gè)Pod中為同一個(gè)應(yīng)用程序使用不同的容器:一個(gè)容器用于前端,另一個(gè)容器用于后端,還有一個(gè)數(shù)據(jù)庫(kù)。Pod的配置可以導(dǎo)到Kubernetes兼容的YAML文件,并應(yīng)用到Kubernetes集群中,從而允許容器更快地進(jìn)入生產(chǎn)。
Podman的另一個(gè)特性是它是無(wú)守護(hù)進(jìn)程的。守護(hù)進(jìn)程是在后臺(tái)運(yùn)行的程序,它處理服務(wù)、進(jìn)程和請(qǐng)求,沒(méi)有用戶界面。Podman是一種獨(dú)特的容器引擎,因?yàn)樗鼘?shí)際上并不依賴于守護(hù)進(jìn)程,而是作為子進(jìn)程啟動(dòng)容器和Pod。
你可能會(huì)問(wèn):“我為什么要使用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與Linux內(nèi)核交互,通過(guò)runC容器運(yùn)行時(shí)進(jìn)程而不是Daemon來(lái)管理容器。Buildah實(shí)用程序用于替代Docker build作為容器鏡像構(gòu)建工具,Docker push被Skopeo替代,用于在注冊(cè)表和容器引擎之間移動(dòng)容器鏡像。
(1) 架構(gòu)
Docker使用守護(hù)進(jìn)程,一個(gè)正在后臺(tái)運(yùn)行的程序,來(lái)創(chuàng)建鏡像和運(yùn)行容器。Podman是無(wú)守護(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沒(méi)有守護(hù)進(jìn)程來(lái)管理其活動(dòng),也無(wú)需為其容器分配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訪問(wèn)權(quán)限,這在Root級(jí)別和Rootless級(jí)別之間添加了一個(gè)自然屏障,提高了安全性。不過(guò),Podman可以同時(shí)運(yùn)行Root容器和Rootless容器。
(4) Systemd
如果沒(méi)有守護(hù)進(jìn)程,Podman需要另一個(gè)工具來(lái)管理服務(wù)并支持后臺(tái)運(yùn)行的容器。Systemd為現(xiàn)有容器創(chuàng)建控制單元或用來(lái)生成新容器。Systemd還可以與Podman集成,允許它在默認(rèn)情況下運(yùn)行啟用了Systemd的容器,從而無(wú)需進(jìn)行任何修改。
通過(guò)使用Systemd,供應(yīng)商可以將他們的應(yīng)用程序封裝為容器用來(lái)安裝、運(yùn)行和管理,因?yàn)楝F(xiàn)在大多數(shù)應(yīng)用程序都是通過(guò)這種方式打包和交付的。
(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采用模塊化的方法,依靠專門的工具來(lái)完成特定的任務(wù)。
4 . Podman vs Docker:他們能合作嗎?作為最好的、最易應(yīng)用于Docker的替代方案——用戶可以將Docker別名設(shè)置為Podman(別名Docker=Podman),且不會(huì)出現(xiàn)任何問(wè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è)問(wèn)題。
Docker和Podman能共存嗎?是的,而且會(huì)很好。許多開發(fā)人員一直在合用Docker和Podman來(lái)創(chuàng)建更安全、更高效、更敏捷的框架。它們有很多共同之處,無(wú)論是從Docker到Podman的轉(zhuǎn)變,亦或是二者合并使用,都可以做到無(wú)縫銜接。
本文名稱:Podman是什么?和Docker有啥區(qū)別?
網(wǎng)頁(yè)地址:http://www.rwnh.cn/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í)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容