Introduction

Podman est un outil utilisé pour développer, gérer et exécuter des conteneurs et des images. Il est développé par Red Hat et conçu pour remplacer Docker.

Podman est très similaire à Docker. La principale différence est que Docker a besoin du démon Docker Engine, alors que Podman ne nécessite aucun démon pour exécuter les conteneurs. Il prend en charge plusieurs formats d'images et plusieurs façons de charger les images.

Comment Docker fonctionne-t-il ?

Tout d'abord, soyons clairs sur le fonctionnement de Docker ; cela nous aidera à comprendre la motivation de Podman et aussi de Buildah.

Si vous êtes un utilisateur Docker, vous comprenez qu'il existe un processus démon qui doit être exécuté pour traiter toutes les commandes Docker. Dans le schéma ci-dessous, nous pouvons voir que le démon Docker fournit toutes les fonctionnalités nécessaires pour :

  • Extraire et pousser des images à partir d'un registre d'images
  • Faire des copies d'images dans un stockage de conteneur local et ajouter des couches à ces conteneurs
  • Valider les conteneurs et supprimer les images de conteneurs locaux du référentiel hôte
  • Demandez au noyau d'exécuter un conteneur avec le bon espace de noms et le bon groupe de contrôle, etc.
  • Essentiellement, le démon Docker fait tout le travail avec les registres, les images, les conteneurs et le noyau. L'interface de ligne de commande (CLI) Docker demande au démon de le faire en votre nom.

Il y a beaucoup à dire en faveur de cette approche, aux débuts de Docker, cela avait beaucoup de sens. Qu'il suffise de dire qu'il y avait plusieurs raisons pour lesquelles les utilisateurs de Docker étaient préoccupés par cette approche à mesure que l'utilisation augmentait.

Pour en citer quelques-uns :

  • Un seul processus peut être un seul point de défaillance.
  • Ce processus possédait tous les processus enfants (les conteneurs en cours d'exécution).
  • Si un échec se produisait, alors il y avait des processus orphelins.
  • La construction de conteneurs a entraîné des failles de sécurité.
  • Toutes les opérations Docker devaient être effectuées par un utilisateur (ou des utilisateurs) avec la même autorité root complète.
  • Il y en a probablement plus.

La communauté pense que Podman a résolu bon nombre de ces problèmes.

L'approche Podman consiste simplement à interagir directement avec le registre d'images, avec le conteneur et le stockage d'images, et avec le noyau Linux via le processus d'exécution du conteneur runC (pas un démon).

Qu'est ce que cela signifie pour l'utilisateur qui migre vers Podman. Il y a quelques éléments à déballer ici et nous aborderons chacun séparément :

  • Vous installez Podman au lieu de Docker. Vous n'avez pas besoin de démarrer ou de gérer un processus démon comme le démon Docker.
  • Les commandes que vous connaissez dans Docker fonctionnent de la même manière pour Podman.
  • Podman stocke ses conteneurs et images dans un endroit différent de Docker.
  • Les images Podman et Docker sont compatibles.
  • Podman fait plus que Docker pour les environnements Kubernetes.
  • Qu'est-ce que Buildah et pourquoi en aurais-je besoin ?

Installation de Podman

Pour installer Podman sur Red Hat Enterprise Linux 8 ou version ultérieure, utilisez ce qui suit :

# dnf install podman

Pour les environnements sur Ubuntu 20.04 lts

# apt-get update -y

Installations de certaines dépendances nécessaires à l'installation de Podman.

# apt-get install curl wget gnupg2 -y

Sourcez la version Ubuntu et ajoutez le dépôt Podman avec la commande suivante :

# source /etc/os-release
# sh -c "echo 'deb http://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/xUbuntu_${VERSION_ID}/ /' > /etc/apt/sources.list.d/devel:kubic:libcontainers:stable.list"

Ensuite, téléchargez et ajoutez la clé GPG avec la commande suivante :

# wget -nv https://download.opensuse.org/repositories/devel:kubic:libcontainers:stable/xUbuntu_${VERSION_ID}/Release.key -O- | apt-key add -

Ensuite, mettez à jour le référentiel et installez Podman avec la commande suivante :

# apt-get update -qq -y
# apt-get -qq --yes install podman

Configuration OCI Registry

Lorsque vous tirez une image à l'aide de la commande Podman, celle-ci recherche une liste de registres dans le fichier de configuration des registres /etc/containers/registries.conf.

Vous pouvez modifier et ajouter différents registres dans le fichier de configuration.

# nano /etc/containers/registries.conf

Ajoutez les lignes suivantes à la fin du fichier :

[registries.insecure]
registries = [ ]
# If you need to block pull access from a registry, uncomment the section below
# and add the registries fully-qualified name.
# Docker only
[registries.block]
registries = [ ]

Les commandes Podman

Les commandes Podman sont les mêmes que celles de Docker.

Lors de la création de Podman, l'objectif était de s'assurer que les utilisateurs de Docker puissent s'adapter facilement.

Ainsi, toutes les commandes que vous connaissez existent également avec Podman. En fait, on prétend que si vous avez des scripts existants qui exécutent Docker, vous pouvez créer un alias docker pour podman et tous vos scripts devraient fonctionner (alias docker=podman).

Vous devez d'abord arrêter Docker (systemctl stop docker). Il existe un package que vous pouvez installer appelé podman-docker qui effectue cette conversion pour vous. Il dépose un script dans /usr/bin/docker qui exécute Podman avec les mêmes arguments.

Les commandes que vous connaissez (pull, push, build, run, commit, tag, etc.) existent toutes avec Podman.

La prise en charge de RHEL est destinée aux versions 7.7 et 8.1 et suivantes. Les améliorations apportées à la sécurité de l'espace utilisateur ont rendu cela possible. L'exécution de Podman en tant qu'utilisateur normal signifie que Podman stockera, par défaut, les images et les conteneurs dans le répertoire de base de l'utilisateur.

Pour plus d'informations sur le fonctionnement de Podman en tant qu'utilisateur non root, veuillez consulter l'article de Dan Walsh : Comment fonctionne Podman sans racine ?

Annexe

Ce site web utilise des cookies. En utilisant le site Web, vous acceptez le stockage de cookies sur votre ordinateur. Vous reconnaissez également que vous avez lu et compris notre politique de confidentialité. Si vous n'êtes pas d'accord, quittez le site.En savoir plus