Wat is Podman en hoe verschilt het van Docker?

0
260

Podman is een container-engine die compatibel is met de OCI-containers specificatie. Podman maakt deel uit van RedHat Linux, maar kan ook op andere distributies worden geïnstalleerd.

Omdat het OCI-compatibel is, kan Podman worden gebruikt als een drop-in vervanging voor de bekendere Docker-runtime . De meeste Docker-commando's kunnen direct worden vertaald naar Podman-commando's.

Hier ziet u hoe de twee runtimes zich opstapelen.

Wat is 8217;sa Runtime?

Voor veel mensen is een “container” is nog steeds een “Docker container.” Dit is geen nauwkeurige weergave van het huidige containerecosysteem. Docker produceert OCI-containerimages, die kunnen worden gebruikt met andere compatibele runtimes. Kubernetes is een voorbeeld, terwijl Podman een ander voorbeeld is.

Als gevolg hiervan hebben Podman en Docker overlappende kernfunctionaliteit. Beide produceren afbeeldingen die de ander kan gebruiken om containers uit te voeren. De twee runtimes voegen vervolgens hun eigen specialismen toe bovenop de basiscontainerisatiefuncties.

Hoe Podman te installeren

Als je RedHat Linux gebruikt, staat Podman in de extras-repository. Gebruik abonnement-manager om de repository toe te voegen. Je kunt dan yum gebruiken om Podman te installeren.

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

Meest andere populaire Linux-distributies bevatten ook Podman in hun standaardrepository's. Je kunt apt install podman, dnf install podman of pacman -S podman gebruiken om het te installeren.

Werken met containers en afbeeldingen

Podman's CLI is bewust afgestemd op Docker's. Dat betekent dat je bekende Docker-commando's kunt gebruiken om met Podman-containers te werken:

podman pull my-image:latest podman run my-image:latest –name my-container podman ps podman rm my-container

Podman zou direct bekend moeten zijn bij Docker-gebruikers. Je zou docker naar podman kunnen aliasen en geen verschil merken in het dagelijks gebruik. Natuurlijk is niet elke functie beschikbaar, hoewel het proberen om Docker Swarm-commando's te gebruiken een foutmelding geeft, omdat Podman niets heeft dat gelijkwaardig is aan Swarm.

Wat is er anders aan Podman?

Hoewel het lijkt op Docker, heeft Podman een paar onderscheidende verschillen. De eerste en misschien wel meest significante is de architectuur. Podman is daemon-less, er is geen langdurig proces voor het beheren van uw containers.

Wanneer u een podman-opdracht uitvoert, communiceert u rechtstreeks met het proces dat uw containers start en uw afbeeldingen ophaalt. De CLI van Docker is afhankelijk van een verbinding met de Docker-daemon. De CLI stuurt opdrachten naar de daemon en de daemon handelt er vervolgens naar om containers te maken.

Het model van Podman helpt om een ​​aantal van de zorgen rond Docker-beveiliging weg te nemen. Het ontbreken van een daemon vermindert het aanvalsoppervlak van de container aanzienlijk. Als je externe toegang nodig hebt, stelt Podman een REST API beschikbaar waarmee je kunt communiceren met alle ondersteunde brontypen.

Pods

Podman wordt geleverd met unieke functies die Docker volledig mist . In Podman kunnen containers “pods” die samen opereren. Het is vergelijkbaar met het Kubernetes Pod-concept.

Om een ​​Pod te maken, gebruikt u de opdracht pod create:

podman pod create –name my-pod

Containers worden toegevoegd aan Pods door de –pod vlag op te nemen met podman run:

podman run –pod my-pod –name image-1 mijn-image:laatste podman run –pod my-pod –name image-2 other-image:latest

Containers in de pod kunnen in totaal worden beheerd door podman pod-commando's te gebruiken:

podman kill my-pod # Dood alle containers podman herstart my-pod # Start alle containers opnieuw podman stop my-pod # Stop alle containers

Het Pod-concept is krachtig, omdat het je in staat stelt beheer meerdere containers in totaal. U kunt app-containers maken, zoals een frontend, een backend en een database, deze toevoegen aan een pod en ze gezamenlijk beheren.

Het dichtst bij Docker komt met Compose. Als u Compose gebruikt, moet u een docker-compose.yml-bestand schrijven en het afzonderlijke binaire bestand docker-compose gebruiken. Met Podman kun je pods maken met één opdracht zonder de terminal te verlaten.

Als je de definitie van een pod moet exporteren, maakt Podman een Kubernetes-compatibel YAML-manifest. U kunt het manifest nemen en het rechtstreeks toepassen op een Kubernetes-cluster. Dit verkleint de kloof tussen het runnen van een container in ontwikkeling en het lanceren ervan op de productie-infrastructuur.

podman genereer kube

Rootless-containers

Podman ondersteunt rootless-containers. Dit helpt u uw beveiliging te vergrendelen door te voorkomen dat containers worden uitgevoerd als de rootgebruiker van de host. Docker ondersteunt nu de rootless-modus als een daemon-configuratieoptie. Podman had rootless voor Docker en legt meer nadruk op het gebruik ervan.

Installeer eerst slirp4netns:

yum install slirp4netns

Configureer vervolgens een aantal gebruikersgebonden netwerknaamruimten:

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

Dit commando maakt het gebruik van netwerknaamruimten mogelijk zonder root te zijn.

Nu, jij''8217 ;re klaar om een ​​rootless container te draaien! Maak verbinding met de server als een gewone gebruiker. Start een nieuwe container met podman run. Het wordt gemaakt met de UID van uw gebruikersaccount in plaats van root.

Naast volledig rootless naamruimten, is podman standaard gericht op de huidige gebruiker. Uw afbeeldingen en containers worden opgeslagen in de $HOME-map van uw gebruiker. Wanneer u podman ps of podman-afbeeldingen uitvoert, ziet u alleen uw inhoud in plaats van elke bron op het systeem.

Conclusie

Podman is een OCI -compatibele containerruntime die werkt zonder een daemon. De CLI implementeert alle core Docker-commando's. Je kunt eenvoudig overstappen naar Podman of het gebruiken naast een bestaande Docker-installatie.

In tegenstelling tot Docker biedt Podman eersteklas ondersteuning voor het beheren van meerdere containers. Het Pod-model maakt het eenvoudig om met een stapel diensten te werken. U kunt alle bijbehorende containers stoppen, opnieuw starten en verwijderen met behulp van opdrachten op pod-niveau.

Podman's staat ook klaar om u te helpen de sprong naar containerorkestratieservices te maken. De mogelijkheid om Kubernetes-compatibele YAML te exporteren, maakt Podman een betere match met veel gecontaineriseerde productieomgevingen. Ontwikkelaars en operators kunnen dezelfde tool gebruiken om hun containers te beheren, wat meer samenwerking en flexibiliteit mogelijk maakt.