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 se superposent.
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 runtimes 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 en plus des fonctionnalités de conteneurisation de base.
Comment installer Podman
Si vous utilisez RedHat Linux, Podman est dans les extras
dépôt. 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
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 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 instantanément 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, cependant, 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 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 à long terme 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
commande :
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 de manière agrégée à 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 agrégée. 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 qui se rapproche le plus de cela est avec Compose. L'utilisation de Compose nécessite que vous écriviez un docker-compose.yml
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 produit 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 que root
de l'hôte. utilisateur. Docker prend désormais en charge le mode sans racine en tant qu'option de configuration de démon. Podman était sans 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 de 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
.
Vous êtes maintenant prêt à exécuter un conteneur sans racine ! Connectez-vous au serveur en tant qu'utilisateur ordinaire. Démarrer 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 $HOME
de votre utilisateur dossier. Lorsque vous exécutez podman ps
ou podman images
, vous ne verrez que votre contenu au lieu de toutes les ressources du système.
Conclusion
Podman est un environnement d'exécution de conteneur compatible OCI qui fonctionne sans démon. La CLI implémente toutes les commandes principales de Docker. Vous pouvez facilement passer à Podman ou l'utiliser avec une installation Docker existante.
Contrairement à Docker, Podman dispose d'un support 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 avec Kubernetes fait de Podman une solution plus adaptée à 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 ainsi plus de collaboration et de flexibilité.