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.
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 :
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 :
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 :
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
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 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 ?