Agence web » Actualités du digital » Qu’est-ce que Podman et en quoi diffère-t-il de Docker ? –

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 conforme à l’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 un aperçu de la façon dont les deux runtimes s’empilent.

Qu’est-ce qu’un 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 extras dépôt. Utiliser 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

La plupart des autres distributions Linux populaires incluent également Podman dans leurs référentiels par défaut. Vous pouvez apt install podman, dnf install podman ou alors 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 pourriez alias docker à podman et ne pas remarquer une différence dans l’utilisation quotidienne. Bien sûr, toutes les fonctionnalités ne sont pas disponibles, essayer d’utiliser les commandes Docker Swarm générera une erreur, car Podman n’a rien d’équivalent à Swarm.

En quoi Podman est-il différent ?

Bien que cela 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 un podman commande, vous interagissez directement avec le 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 le pod create commander:

podman pod create --name my-pod

Les conteneurs sont ajoutés aux pods en incluant le --pod drapeau 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 à l’aide de podman pod commandes :

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

Le concept Pod est puissant, car il vous permet de gérer plusieurs conteneurs de manière globale. 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 docker-compose.yml fichier et utilisez le fichier séparé docker-compose binaire. 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 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 racines

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 que root utilisateur. Docker prend désormais en charge le mode sans racine en tant qu’option de configuration du démon. Podman était déraciné 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 de réseau limités à l’utilisateur :

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

Cette commande permet l’utilisation d’espaces de noms réseau sans être root.

Vous êtes maintenant prêt à exécuter un conteneur sans racine ! Connectez-vous au serveur en tant qu’utilisateur ordinaire. Commencer 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 votre $HOME dossier. Quand tu cours podman ps ou alors podman images, vous verrez seulement votre contenu au lieu de toutes les ressources du système.

Conclusion

Podman est un runtime de conteneur compatible OCI 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 du pod.

Podman 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, permettant plus de collaboration et de flexibilité.

★★★★★