AllInfo

Qu'est-ce que Podman et en quoi diffère-t-il de Docker ?

Podman est un moteur de conteneur compatible avec la spécification OCI Containers. Podman fait partie de RedHat Linux, mais peut également être installé sur d'autres distributions.

Comme il est compatible OCI, Podman peut être utilisé en remplacement du runtime Docker plus connu . La plupart des commandes Docker peuvent être directement traduites en commandes Podman.

Voici comment les deux runtimes s'empilent.

What&# 8217;sa Runtime ?

Pour beaucoup de gens, un “conteneur” est toujours un “conteneur Docker.” Ce n'est pas une représentation précise de l'écosystème actuel des conteneurs. Docker produit des images de conteneur OCI, qui peuvent être utilisées avec d'autres environnements d'exécution compatibles. Kubernetes en est un exemple, tandis que Podman en est un autre.

En conséquence, Podman et Docker ont des fonctionnalités de base qui se chevauchent. Les deux produisent des images que l'autre peut utiliser pour exécuter des conteneurs. Les deux environnements d'exécution ajoutent ensuite leurs propres spécialités aux fonctionnalités de conteneurisation de base.

Comment installer Podman

Si vous utilisez RedHat Linux, Podman est dans le référentiel des extras. Utilisez subscription-manager pour ajouter le référentiel. Vous pourrez alors utiliser yum pour installer Podman.

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

Les plus populaires Les distributions Linux incluent également Podman dans leurs référentiels par défaut. Vous pouvez installer podman, dnf install podman ou pacman -S podman pour l'installer.

Travailler avec des conteneurs et des images

La CLI de Podman est délibérément alignée sur celle de Docker. Cela signifie que vous pouvez utiliser les commandes Docker familières pour interagir avec les conteneurs Podman :

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

Podman devrait être immédiatement familier aux utilisateurs de Docker. Vous pouvez alias docker à podman et ne pas remarquer de différence dans l'utilisation quotidienne. Bien sûr, toutes les fonctionnalités ne sont pas disponibles, bien qu'essayer d'utiliser les commandes Docker Swarm génère une erreur, car Podman n'a rien d'équivalent à Swarm.

Qu'est-ce qui diffère de Podman ?

Bien qu'il ressemble à Docker, Podman présente quelques différences distinctives. Le premier et sans doute le plus important est son architecture. Podman est sans démon, il n'y a pas de processus de longue durée pour gérer vos conteneurs.

Lorsque vous exécutez une commande podman, vous vous connectez directement au processus qui démarre vos conteneurs et récupère vos images. La CLI de Docker dépend d'une connexion au démon Docker. La CLI envoie des commandes au démon, et le démon agit ensuite sur elles pour créer des conteneurs.

Le modèle de Podman aide à répondre à certaines des préoccupations concernant la sécurité de Docker. L'absence de démon réduit considérablement la surface d'attaque du conteneur. Si vous avez besoin d'un accès à distance, Podman expose une API REST qui vous permet d'interagir avec tous les types de ressources pris en charge.

Pods

Podman est livré avec des fonctionnalités uniques qui manquent totalement à Docker . Dans Podman, les conteneurs peuvent former des “pods” qui fonctionnent ensemble. C'est similaire au concept Kubernetes Pod.

Pour créer un Pod, utilisez la commande pod create :

podman pod create –name my-pod

Les conteneurs sont ajoutés à Pods en incluant le drapeau –pod avec podman run :

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

Les conteneurs du Pod peuvent être gérés globalement en utilisant les commandes podman pod :

podman kill my-pod # Tuer tous les conteneurs podman restart my-pod # Redémarrer tous les conteneurs podman stop my-pod # Arrêter tous les conteneurs

Le concept Pod est puissant, car il vous permet gérer plusieurs conteneurs dans l'ensemble. Vous pouvez créer des conteneurs d'applications, tels qu'un frontend, un backend et une base de données, les ajouter à un Pod et les gérer à l'unisson.

Le Docker le plus proche est avec Compose. L'utilisation de Compose nécessite que vous écriviez un fichier docker-compose.yml et que vous utilisiez le binaire docker-compose séparé. Podman vous permet de créer des pods à l'aide d'une seule commande sans quitter le terminal.

Lorsque vous devez exporter la définition d'un pod, Podman produira un manifeste YAML compatible avec Kubernetes. Vous pouvez prendre le manifeste et l'appliquer directement à un cluster Kubernetes. Cela réduit l'écart entre l'exécution d'un conteneur en développement et son lancement sur l'infrastructure de production.

podman generate kube

Conteneurs sans racine

Podman prend en charge les conteneurs sans racine. Cela vous aide à verrouiller votre sécurité en empêchant les conteneurs de s'exécuter en tant qu'utilisateur root de l'hôte. Docker prend désormais en charge le mode sans racine en tant qu'option de configuration du démon. Podman n'avait pas de racine avant Docker et met davantage l'accent sur son utilisation.

Tout d'abord, installez slirp4netns :

yum install slirp4netns

Ensuite, configurez une quantité d'espaces de noms réseau définis par l'utilisateur :

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

Cette commande permet d'utiliser les espaces de noms réseau sans être root.

Maintenant, vous&#8217 ; êtes prêt à exécuter un conteneur sans racine ! Connectez-vous au serveur en tant qu'utilisateur ordinaire. Démarrez un nouveau conteneur avec podman run. Il sera créé avec l'UID de votre compte utilisateur au lieu de root.

Outre les espaces de noms entièrement sans racine, podman est limité à l'utilisateur actuel par défaut. Vos images et conteneurs sont stockés dans le dossier $HOME de votre utilisateur. Lorsque vous exécutez des images podman ps ou podman, vous ne verrez que votre contenu au lieu de toutes les ressources du système.

Conclusion

Podman est un OCI -un environnement d'exécution de conteneur conforme qui fonctionne sans démon. La CLI implémente toutes les commandes Docker principales. Vous pouvez facilement passer à Podman ou l'utiliser avec une installation Docker existante.

Contrairement à Docker, Podman offre une prise en charge de premier ordre pour la gestion de plusieurs conteneurs. Le modèle Pod facilite le travail avec une pile de services. Vous pouvez arrêter, redémarrer et supprimer tous les conteneurs associés à l'aide de commandes au niveau des pods.

Podman’s est également prêt à vous aider à passer aux services d'orchestration de conteneurs. La possibilité d'exporter du YAML compatible Kubernetes fait de Podman une correspondance plus étroite avec de nombreux environnements de production conteneurisés. Les développeurs et les opérateurs peuvent utiliser le même outil pour gérer leurs conteneurs, ce qui permet plus de collaboration et de flexibilité.

Exit mobile version