GNU/Linux >> Znalost Linux >  >> Ubuntu

Podman vs Docker:Vše, co potřebujete vědět

Úvod

Kontejnerizace nabízí vývojářům způsob, jak efektivně testovat, sestavovat a nasazovat aplikace. Mezi výhody kontejnerů patří přenositelnost, konzistence, efektivita a menší režie ve srovnání s tradičními virtuálními počítači.

Po dlouhou dobu je Docker nejoblíbenějším enginem pro správu kontejnerů na trhu. Jak se však kontejnerizace stala ve světě DevOps standardem, objevili se konkurenti jako Podman.

Tento článek porovná dva nástroje pro správu kontejnerů – Docker a Podman. Pomůže vám také vybrat správný motor pro vaše potřeby.

Podman vs Docker:Definice

Co je Docker?

Docker je oblíbená platforma pro vytváření, nasazování a správu kontejnerů. Kontejnery Docker umožňují vývojářům aplikovat systémově agnostický přístup k nasazení softwaru. Vzhledem k tomu, že Docker spouští stejné kontejnery dockerů na jakémkoli operačním systému, kontejnerizované aplikace jsou multiplatformní.

Co je Podman?

Podman je kontejnerový engine bez démonů a kořenů vyvinutý společností RedHat, navržený jako alternativa k Dockeru. Modulární konstrukce umožňuje společnosti Podman používat jednotlivé systémové komponenty pouze v případě potřeby. Jeho přístup ke správě kontejnerů bez kořenů umožňuje, aby kontejnery spouštěli uživatelé bez oprávnění root.

Podman vs. Docker:Srovnání

V následující části se článek bude věnovat podobnostem a rozdílům mezi Podmanem a Dockerem do hloubky.

Docker Podman
Démon Používá démona Docker Architektura bez démonů
Root Spouští kontejnery pouze jako root Spouští kontejnery jako root i jako non-root
Obrázky Umí vytvářet obrázky kontejnerů Používá Buildah k vytvoření obrázků kontejnerů
Monolitická platforma Ano Ne
Docker-swarm Podporováno Nepodporováno
Docker-compose Podporováno Podporováno
Běží nativně na Linux, macOS, Windows Linux, macOS, Windows (s WSL)

Architektura

Docker využívá architekturu klient-server. Démon Docker je trvalý proces na pozadí, který spravuje kontejnery a udržuje komunikaci mezi klientem a serverem. Výstup docker version zobrazí samostatné sekce pro klientskou a serverovou verzi.

Podman spravuje kontejnery pomocí modelu fork-exec. Protože Podman je proces a nepoužívá paradigma klient-server, nevyžaduje ke spuštění démona. Kontejnery Podman jsou podřízené procesy hlavního procesu Podman. Pomocí podman version ukazuje, že Podman uvádí pouze jedno číslo verze.

Hlavní jednotkou architektury Podman je kontejner. Podman však také představuje koncept pod. Stejně jako moduly Kubernetes jsou moduly Podman skupiny jednoho nebo více kontejnerů, které sdílejí stejné systémové prostředky. Modul se skládá z hlavního kontejneru a kontejnerů postranního vozíku, které jej podpírají.

Snadné použití

Docker obsahuje komplexní sadu přímých a intuitivních příkazů. Pomocí Dockeru mohou vývojáři snadno vytvářet, nasazovat a spravovat kontejnerizované aplikace.

Podman byl vytvořen tak, aby hladce nahradil Docker v pracovním postupu vývoje softwaru, takže jeho příkazy jsou většinou stejné jako příkazy Dockeru. Například docker pull příkaz se změní na podman pull :

Kromě toho, že Podman zdědil snadnost použití Dockeru, podobnost mezi těmito dvěma nástroji také znamená, že migrace z Dockeru na Podman vyžaduje jen malé úsilí.

Kořenová oprávnění

Docker vyžaduje oprávnění root ke komunikaci s démonem, protože démon vždy běží jako uživatel root. Pokud uživatel není členem docker Unix, musí spouštět příkazy Docker pomocí příkazu sudo. Spuštění Dockeru v režimu rootless je možné, ale vyžaduje instalaci dalších balíčků a specifických ovladačů úložiště.

Podman je podle návrhu bez kořenů. Díky modulární architektuře je možné udělit různá oprávnění různým uživatelům.

Obrázky budov

Docker používá docker build příkaz k vytvoření obrázků kontejneru z dockerfile a kontextu sestavení. Kontext sestavení je sada souborů zadaných v dockerfile, který se používá při vytváření kontejneru.

Podman obsahuje podman build příkaz, který pracuje se syntaxí podobnou docker build .

Podman však používá Buildah , další open-source nástroj, k provedení procesu budování. Když podman build je spuštěn, buildah bud (build-using-dockerfile) je volán příkaz k emulaci docker build příkaz.

Spuštěné kontejnery

Když je Docker přijme příkaz spuštění dockeru, provede několik akcí:

  1. Zkontroluje, zda uživatel zadaný obrázek lokálně existuje. Pokud ne, stáhne obrázek z nakonfigurovaných registrů.
  2. Vytvoří nad obrazem zapisovatelnou vrstvu kontejneru.
  3. Spustí kontejner.

Provoz kontejnerů s Podman se provádí pomocí podman run příkaz, který funguje stejně jako docker run . Jednou z hlavních výhod Podman ve srovnání s Dockerem je, že Podman se plně integruje s systemd ve výchozím stavu. To umožňuje Podmanovi spouštět systemd v kontejneru hned po vybalení.

Docker Swarm a Docker Compose

Docker Swarm je platforma pro orchestraci kontejnerů používaná ke správě kontejnerů Docker. Umožňuje vývojářům spouštět cluster uzlů Docker a nasazovat škálovatelnou aplikaci bez nutnosti dalších závislostí.

Podman nepodporuje Docker Swarm. Uživatelé Podman však mohou používat nástroje, jako je Nomad, který je dodáván s ovladačem Podman.

Docker Compose je nástroj pro správu prostředí vícekontejnerových aplikací. Automatizuje spouštění a správu kontejnerů, díky čemuž je užitečný jako součást životního cyklu vývoje softwaru (SDLC).

Od verze 3.0 Podman podporuje Docker Compose. Předchozí verze Podman neměly způsob, jak simulovat démona Docker nezbytného pro fungování Docker Compose, takže používaly méně uživatelsky přívětivé alternativy, jako je Podman Compose. Podman 3.0 však zavádí podman.socket , soket UNIX, který nahrazuje démona Docker.

Zabezpečení

Docker je podle návrhu považován za bezpečný nástroj, zvláště když procesy provádějí neprivilegovaní uživatelé. Spouštění kontejnerů v privilegovaném režimu se z hlediska zabezpečení nedoporučuje.

Stejně jako jakýkoli jiný nástroj se Docker stane ještě bezpečnější, pokud uživatelé použijí osvědčené bezpečnostní postupy. Zabezpečení Dockeru lze dále zvýšit povolením aplikací AppArmor, SELinux a GRSEC.

Podman Architektura fork-exec z něj dělá ještě bezpečnější řešení než Docker. Model fork-exec umožňuje systému správně zaznamenat uživatele upravující systémové soubory, zatímco přístup klient-server používaný Dockerem nikoli. Proto Podman umožňuje podrobnější protokolování auditu.

Rootless kontejnery jsou další funkcí Podman, která zlepšuje celkové zabezpečení systému. Možnost přiřadit konkrétní oprávnění konkrétním uživatelům umožňuje správcům lépe řídit přístup ke kritickým komponentám serveru.

Podman vs Docker:Jak si vybrat

Vyberte Docker, pokud:

  • Dáváte přednost dobře zdokumentovanému nástroji . Hlavní výhodou Dockeru oproti Podmanu je jeho široké použití. Velké množství podpory související s Dockerem dostupné online znamená, že vyhledávání na internetu může vyřešit mnoho potenciálních problémů.
  • Potřebujete podporu orchestrace kontejnerů . Podpora Docker Swarm je další důležitou výhodou Dockeru. Uživatelé, kteří chtějí organizovat kontejnery Podman, se musí uchýlit k alternativám, které nejsou tak bohaté na funkce jako Docker Swarm, nebo se ponořit do Kubernetes, který má strmou křivku učení a může se ukázat jako příliš složitý pro jednodušší projekty.

Vyberte Podman, pokud:

  • Důraz kladete na bezpečnost . Podmanova architektura je ze své podstaty bezpečnější než architektura Docker.
  • Plánujete se přestěhovat do Kubernetes . Podman představuje koncept podu, díky kterému je dobrým výchozím bodem pro Kubernetes.

Protože Docker i Podman jsou kompatibilní s OCI, je také možné je používat vedle sebe. Například robustnost Dockeru lze využít na vývojových strojích, zatímco prostředí dev, int a prod mohou těžit ze zvýšené bezpečnosti Podman.


Ubuntu
  1. Vše, co potřebujete vědět o Ubuntu 13.04

  2. Vše, co potřebujete vědět o streamu CentOS

  3. Server Ubuntu Co potřebujete vědět

  1. Vydána Fedora 30, zde je vše, co potřebujete vědět

  2. Linux tmp Directory:Vše, co potřebujete vědět

  3. Linuxová komprese souborů:Vše, co potřebujete vědět

  1. Oprávnění souborů Linux:Vše, co potřebujete vědět

  2. Swappiness v Linuxu:Vše, co potřebujete vědět

  3. Ubuntu vs. Lubuntu:Vše, co potřebujete vědět