GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Podman contre Docker :tout ce que vous devez savoir

Présentation

La conteneurisation offre aux développeurs un moyen de tester, de créer et de déployer des applications de manière simplifiée. Les avantages des conteneurs incluent la portabilité, la cohérence, l'efficacité et moins de frais généraux par rapport aux machines virtuelles traditionnelles.

Pendant longtemps, Docker a été le moteur de gestion de conteneurs le plus populaire du marché. Cependant, alors que la conteneurisation devenait la norme dans le monde DevOps, des concurrents comme Podman ont émergé.

Cet article compare deux moteurs de gestion de conteneurs :Docker et Podman. Cela vous aidera également à choisir le bon moteur pour vos besoins.

Podman contre Docker :définitions

Qu'est-ce que Docker ?

Docker est une plate-forme populaire pour créer, déployer et gérer des conteneurs. Les conteneurs Docker permettent aux développeurs d'appliquer une approche indépendante du système au déploiement de logiciels. Étant donné que Docker exécute les mêmes conteneurs Docker sur n'importe quel système d'exploitation, les applications conteneurisées sont multiplateformes.

Qu'est-ce que Podman ?

Podman est un moteur de conteneur sans démon et sans racine développé par RedHat, conçu comme une alternative à Docker. La conception modulaire permet à Podman d'utiliser des composants système individuels uniquement en cas de besoin. Son approche sans racine de la gestion des conteneurs permet aux conteneurs d'être exécutés par des utilisateurs non root.

Podman contre. Docker :comparaison

Dans la section suivante, l'article approfondira les similitudes et les différences entre Podman et Docker.

Docker Podman
Démon Utilise le démon Docker Architecture sans démon
Racine Exécute les conteneurs en tant que root uniquement Exécute les conteneurs en tant que root et non root
Images Peut créer des images de conteneur Utilise Buildah pour créer des images de conteneur
Plateforme monolithique Oui Non
Docker-swarm Pris en charge Non pris en charge
Docker-composer Pris en charge Pris en charge
S'exécute en natif sur Linux, macOS, Windows Linux, macOS, Windows (avec WSL)

Architecture

Docker utilise une architecture client-serveur. Le démon Docker est un processus d'arrière-plan persistant qui gère les conteneurs et maintient la communication entre le client et le serveur. La sortie de la docker version La commande affiche des sections distinctes pour les versions client et serveur.

Podman gère les conteneurs à l'aide du modèle fork-exec. Étant donné que Podman est un processus et n'utilise pas le paradigme client-serveur, il ne nécessite pas de démon pour s'exécuter. Les conteneurs Podman sont des processus enfants du processus Podman principal. Utilisation de la podman version La commande montre que Podman ne répertorie qu'un seul numéro de version.

L'unité principale de l'architecture Podman est un conteneur. Cependant, Podman introduit également le concept de pod. Comme les pods Kubernetes, les pods Podman sont des groupes d'un ou plusieurs conteneurs qui partagent les mêmes ressources système. Le pod se compose du conteneur principal et des conteneurs annexes qui le prennent en charge.

Facilité d'utilisation

Docker dispose d'un ensemble complet de commandes simples et intuitives. Grâce à Docker, les développeurs peuvent facilement créer, déployer et gérer des applications conteneurisées.

Podman a été conçu pour remplacer de manière transparente Docker dans un flux de travail de développement logiciel, de sorte que ses commandes sont pour la plupart les mêmes que celles de Docker. Par exemple, le docker pull la commande devient podman pull :

Outre le fait que Podman hérite de la facilité d'utilisation de Docker, la similitude entre les deux outils signifie également que la migration de Docker vers Podman nécessite peu d'efforts.

Privilèges racine

Docker nécessite des privilèges root pour communiquer avec le démon puisque le démon s'exécute toujours en tant qu'utilisateur root. Si un utilisateur n'est pas membre du docker groupe Unix, ils doivent exécuter les commandes Docker à l'aide de la commande sudo. L'exécution de Docker en mode sans racine est possible mais nécessite l'installation de packages supplémentaires et de pilotes de stockage spécifiques.

Podman est sans racine par conception. Grâce à son architecture modulaire, il est possible d'accorder différents privilèges à différents utilisateurs.

Construire des images

Docker utilise la docker build commande pour créer des images de conteneur à partir d'un dockerfile et d'un contexte de génération. Le contexte de construction est un ensemble de fichiers spécifiés dans le dockerfile qui est utilisé dans la création du conteneur.

Podman inclut la podman build commande qui fonctionne avec une syntaxe similaire à docker build .

Cependant, Podman utilise Buildah , un autre outil open source, pour effectuer le processus de construction. Quand podman build est exécuté, le buildah bud La commande (build-using-dockerfile) est appelée pour émuler la docker build commande.

Exécuter des conteneurs

Quand Docker reçoit la commande docker run, il effectue plusieurs actions :

  1. Vérifie si l'image spécifiée par l'utilisateur existe localement. Sinon, il extrait l'image des registres configurés.
  2. Crée une couche de conteneur inscriptible au-dessus de l'image.
  3. Démarre le conteneur.

Exécuter des conteneurs avec Podman est effectué à l'aide de l'podman run commande, qui fonctionne de la même manière que docker run . L'un des principaux avantages de Podman par rapport à Docker est que Podman s'intègre entièrement à systemd par défaut. Cela permet à Podman d'exécuter systemd dans le conteneur prêt à l'emploi.

Docker Swarm et Docker Compose

Essaim Docker est une plateforme d'orchestration de conteneurs utilisée pour gérer les conteneurs Docker. Il permet aux développeurs d'exécuter un cluster de nœuds Docker et de déployer une application évolutive sans autres dépendances requises.

Podman ne prend pas en charge Docker Swarm. Cependant, les utilisateurs de Podman peuvent utiliser des outils tels que Nomad, qui est fourni avec un pilote Podman.

Docker Compose est un outil de gestion d'environnements applicatifs multi-conteneurs. Il automatise le lancement et la gestion des conteneurs, ce qui le rend utile dans le cadre d'un cycle de vie de développement logiciel (SDLC).

Depuis la version 3.0, Podman prend en charge Docker Compose. Les versions précédentes de Podman n'avaient pas de moyen de simuler le démon Docker nécessaire au fonctionnement de Docker Compose, elles utilisaient donc des alternatives moins conviviales comme Podman Compose. Cependant, Podman 3.0 introduit podman.socket , un socket UNIX qui remplace le démon Docker.

Sécurité

Docker est, de par sa conception, considéré comme un outil sécurisé, en particulier lorsque les processus sont exécutés par des utilisateurs non privilégiés. L'exécution de conteneurs en mode privilégié n'est pas recommandée du point de vue de la sécurité.

Comme avec tout autre outil, Docker devient encore plus sûr si les utilisateurs appliquent les meilleures pratiques de sécurité. La sécurité de Docker peut être encore renforcée en activant AppArmor, SELinux et GRSEC.

Podman L'architecture fork-exec de en fait une solution encore plus sécurisée que Docker. Le modèle fork-exec permet au système d'enregistrer correctement l'utilisateur modifiant les fichiers système, contrairement à l'approche client-serveur utilisée par Docker. Par conséquent, Podman permet une journalisation d'audit plus approfondie.

Les conteneurs sans racine sont une autre fonctionnalité de Podman qui améliore la sécurité globale du système. La possibilité d'attribuer des privilèges spécifiques à des utilisateurs spécifiques permet aux administrateurs d'avoir un meilleur contrôle d'accès aux composants critiques du serveur.

Podman contre Docker :comment choisir

Choisissez Docker si :

  • Vous préférez un outil bien documenté . Le principal avantage de Docker par rapport à Podman est son utilisation généralisée. Une grande quantité de support lié à Docker disponible en ligne signifie que la recherche sur Internet peut résoudre de nombreux problèmes potentiels.
  • Vous avez besoin d'une assistance pour l'orchestration de conteneurs . La prise en charge de Docker Swarm est un autre avantage important de Docker. Les utilisateurs qui souhaitent orchestrer des conteneurs Podman doivent recourir à des alternatives qui ne sont pas aussi riches en fonctionnalités que Docker Swarm ou plonger dans Kubernetes, qui a une courbe d'apprentissage abrupte et peut s'avérer trop complexe pour des projets plus simples.

Choisissez Podman si :

  • Vous mettez l'accent sur la sécurité . L'architecture de Podman est intrinsèquement plus sécurisée que celle de Docker.
  • Vous prévoyez de passer à Kubernetes ultérieurement . Podman introduit le concept de pod, ce qui en fait un bon point de départ pour Kubernetes.

Étant donné que Docker et Podman sont tous deux conformes à l'OCI, il est également possible de les utiliser côte à côte. Par exemple, la robustesse de Docker peut être utilisée sur des machines de développement, tandis que les environnements dev, int et prod peuvent bénéficier de la sécurité accrue de Podman.


Ubuntu
  1. Tout ce que vous devez savoir sur Ubuntu 13.04

  2. Tout ce que vous devez savoir sur le flux CentOS

  3. Fedora 30 est sorti, voici tout ce que vous devez savoir

  4. Répertoire Linux tmp :tout ce que vous devez savoir

  5. Serveur Ubuntu Ce que vous devez savoir

Tout ce que vous devez savoir sur le serveur Linux Ubuntu

Tout ce que vous devez savoir sur le serveur Linux OpenSSH

Tout ce que vous devez savoir sur le système d'exploitation Linux Zorin

Tout ce que vous devez savoir sur le système d'exploitation Peppermint Linux

Tout ce que vous devez savoir sur la distribution Linux Mint

Tout ce que vous devez savoir sur les inodes sous Linux