GNU/Linux >> Tutoriels Linux >  >> Panels >> 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 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é.


Docker
  1. Qu'est-ce que Podman et comment installer Podman sous Linux

  2. Que signifie ${1+"[email protected]"} dans un script shell, et en quoi diffère-t-il de "[email protected]" ?

  3. Qu'est-ce que containerd et quel est son lien avec Docker et Kubernetes ?

  4. Comment sauvegarder et restaurer des conteneurs Docker

  5. Comment mettre en pause et reprendre les conteneurs Docker

Qu'est-ce que Docker ?

Qu'est-ce que la VDI et comment ça marche ?

Qu'est-ce que Docker ? Comment ça marche?

Qu'est-ce que Docker Compose et comment l'utiliser ?

Comment supprimer les conteneurs Docker

Comment arrêter les conteneurs Docker