GNU/Linux >> Znalost Linux >  >> Panels >> Docker

Co je Podman a jak se liší od Dockeru?

Podman je kontejnerový motor, který je kompatibilní se specifikací OCI Containers. Podman je součástí RedHat Linuxu, ale lze jej nainstalovat i na jiné distribuce.

Protože je kompatibilní s OCI, lze Podman použít jako náhradu za známější runtime Docker. Většinu příkazů Dockeru lze přímo přeložit na příkazy Podman.

Zde je pohled na to, jak se obě běhová prostředí skládají.

Co je runtime?

Pro mnoho lidí je „kontejner“ stále „dockerovým kontejnerem“. Toto není přesné znázornění aktuálního kontejnerového ekosystému. Docker vytváří obrazy kontejnerů OCI, které lze použít s jinými kompatibilními runtimemi. Kubernetes je jeden příklad, zatímco Podman je jiný.

V důsledku toho mají Podman a Docker překrývající se základní funkce. Oba vytvářejí obrázky, které může druhý použít ke spouštění kontejnerů. Tyto dva běhové moduly pak k základním funkcím kontejnerizace přidají své vlastní specializace.

Jak nainstalovat Podman

Pokud používáte RedHat Linux, Podman je v extras úložiště. Použijte subscription-manager pro přidání úložiště. Poté budete moci použít yum k instalaci Podmana.

su -
subscription-manager repos --enable rhel-7-server-extras-beta-rpms
yum -y install podman

Většina dalších populárních distribucí Linuxu také zahrnuje Podman ve svých výchozích úložištích. Můžete apt install podman , dnf install podman nebo pacman -S podman k instalaci.

Práce s kontejnery a obrázky

Podmanovo CLI je záměrně sladěno s Dockerovým. To znamená, že k interakci s kontejnery Podman můžete používat známé příkazy Dockeru:

podman pull my-image:latest

podman run my-image:latest --name my-container

podman ps

podman rm my-container

Podman by měl být uživatelům Dockeru okamžitě známý. Můžete alias docker na podman a nevšimnout si rozdílu v každodenním používání. Samozřejmě, že ne všechny funkce jsou dostupné – pokus o použití příkazů Docker Swarm vyvolá chybu, protože Podman nemá nic ekvivalentního k Swarmu.

V čem je Podman jiný?

I když to vypadá podobně jako Docker, Podman má několik rozlišovacích rozdílů. První a pravděpodobně nejvýznamnější je jeho architektura. Podman je bez démonů —neexistuje žádný dlouhodobý proces správy vašich kontejnerů.

Když spustíte podman příkazu, propojujete se přímo s procesem, který spouští vaše kontejnery a načítá vaše obrázky. CLI Dockeru je závislé na připojení k démonu Docker. CLI posílá příkazy démonovi a démon na ně poté působí a vytváří kontejnery.

Podmanův model pomáhá řešit některé obavy týkající se zabezpečení Dockeru. Absence démona výrazně snižuje plochu útoku na kontejner. Pokud potřebujete vzdálený přístup, Podman zpřístupní REST API, které vám umožní komunikovat se všemi podporovanými typy zdrojů.

Pody

Podman přichází s jedinečnými funkcemi, které Docker zcela postrádá. V Podmanu mohou kontejnery tvořit „lusky“, které fungují společně. Je to podobné jako u konceptu Kubernetes Pod.

Chcete-li vytvořit pod, použijte pod create příkaz:

podman pod create --name my-pod

Kontejnery se do Podů přidávají zahrnutím --pod vlajku pomocí podman run :

podman run --pod my-pod --name image-1 my-image:latest
podman run --pod my-pod --name image-2 another-image:latest

Kontejnery v podu lze spravovat souhrnně pomocí podman pod příkazy:

podman kill my-pod      # Kill all containers
podman restart my-pod   # Restart all containers
podman stop my-pod      # Stop all containers

Koncept pod je výkonný, protože vám umožňuje spravovat více kontejnerů dohromady. Můžete vytvořit kontejnery aplikací, jako je frontend, backend a databáze, přidat je do podu a spravovat je společně.

Nejblíže se k tomu Docker dostane s Compose. Použití Compose vyžaduje, abyste napsali docker-compose.yml a použijte samostatný docker-compose binární. Podman vám umožňuje vytvářet Pody pomocí jednoho příkazu, aniž byste museli opustit terminál.

Když potřebujete exportovat definici podu, Podman vytvoří manifest YAML kompatibilní s Kubernetes. Můžete vzít manifest a použít jej přímo na cluster Kubernetes. Tím se zužuje propast mezi spuštěním kontejneru ve vývoji a jeho spuštěním do produkční infrastruktury.

podman generate kube

Kontejnery bez kořenů

Podman podporuje kontejnery bez kořenů. To vám pomůže uzamknout zabezpečení tím, že zabrání spuštění kontejnerů jako root hostitele uživatel. Docker nyní podporuje režim bez root jako možnost konfigurace démona. Podman měl rootless před Dockerem a klade větší důraz na jeho použití.

Nejprve nainstalujte slirp4netns :

yum install slirp4netns

Dále nakonfigurujte množství síťových jmenných prostorů s rozsahem uživatele:

echo "user.max_user_namespaces=28633" > /etc/sysctl.d/userns.conf
sysctl -p /etc/sysctl.d/userns.conf

Tento příkaz umožňuje použití síťových jmenných prostorů, aniž by byl root .

Nyní jste připraveni spustit kontejner bez kořenů! Připojte se k serveru jako běžný uživatel. Spusťte nový kontejner pomocí podman run . Bude vytvořen s UID vašeho uživatelského účtu namísto root .

Kromě plně bezkořenových jmenných prostorů, podman je ve výchozím nastavení omezena na aktuálního uživatele. Vaše obrázky a kontejnery jsou uloženy v $HOME vašeho uživatele složka. Když spustíte podman ps nebo podman images , uvidíte pouze vaše obsahu namísto každého zdroje v systému.

Závěr

Podman je kontejnerový runtime kompatibilní s OCI, který funguje bez démona. CLI implementuje všechny základní příkazy Dockeru. Můžete snadno přejít na Podman nebo jej použít spolu se stávající instalací Docker.

Na rozdíl od Dockeru má Podman prvotřídní podporu pro správu více kontejnerů. Model Pod usnadňuje práci se zásobníkem služeb. Všechny přidružené kontejnery můžete zastavit, restartovat a odstranit pomocí příkazů na úrovni pod.

Podman je také připraven pomoci vám přejít na služby orchestrace kontejnerů. Schopnost exportovat YAML kompatibilní s Kubernetes dělá Podman blíže k mnoha kontejnerovým produkčním prostředím. Vývojáři a operátoři mohou používat stejný nástroj ke správě svých kontejnerů, což umožňuje lepší spolupráci a flexibilitu.


Docker
  1. Co je kontejner a jak to souvisí s Dockerem a Kubernetes?

  2. Jak nainstalovat Docker a spustit kontejnery Docker v Ubuntu

  3. Jak vytvořit Docker Image z kontejneru a Dockerfile

  1. Co je webový server a jak webový server funguje?

  2. Jak zálohovat a obnovovat kontejnery Docker

  3. Jak pozastavit a obnovit kontejnery Docker

  1. Co je Podman a jak nainstalovat Podman v Linuxu

  2. Jak exportovat a importovat kontejnery Docker

  3. Co znamená ${1+“[email protected]”} ve skriptu Shell a jak se liší od „[email protected]“?