Comment utiliser Podman, Dockerfile et Ubuntu : gestion sécurisée et moderne des conteneurs sous Linux

目次

1. Introduction

L’évolution et l’importance croissante de la technologie des conteneurs

Ces dernières années, technologie des conteneurs a rapidement gagné en importance dans le domaine du développement d’applications et des opérations. En particulier, la capacité à aligner les environnements de développement et de production garantit la reproductibilité des opérations, un avantage clé qui a suscité un fort soutien parmi les ingénieurs.

Alors que Docker reste la plateforme de conteneurs la plus largement reconnue, Podman attire de plus en plus l’attention en tant qu’alternative moderne. Podman propose une interface en ligne de commande (CLI) presque identique à Docker, mais se distingue par son architecture sans démon et légère et son support de opération sans privilèges (non-root).

Pourquoi “Podman + Dockerfile + Ubuntu” ?

Dans cet article, nous expliquerons comment combiner Podman, Dockerfile, et Ubuntu pour des flux de travail de conteneurs modernes sous Linux.

  • Ubuntu est une distribution Linux populaire utilisée par tous, des débutants aux utilisateurs avancés,
  • Dockerfile sert de plan pour créer des images de conteneurs,
  • et Podman est un outil de nouvelle génération conçu pour gérer ces images de manière flexible et sécurisée.

Avec une prise de conscience croissante de la sécurité, l’approche d’utiliser Podman avec Dockerfile sur Ubuntu est de plus en plus adoptée tant par les développeurs individuels que par les équipes d’entreprise.

Objectif et public cible

Le but de cet article est de fournir un guide clair, étape par étape, pour créer des conteneurs pratiques avec Podman et Dockerfile sur Ubuntu.

Cet article s’adresse aux lecteurs tels que :

  • Développeurs expérimentés avec Docker qui sont curieux de Podman
  • Utilisateurs d’Ubuntu recherchant une gestion sécurisée des conteneurs
  • Ingénieurs souhaitant intégrer les technologies de conteneurs dans leur flux de travail
  • Débutants intéressés par l’écriture de Dockerfiles et la construction avec Podman

Nous couvrirons tout, des bases et des conseils de dépannage aux principales différences avec Docker et à la façon de migrer.

年収訴求

2. Qu’est‑ce que Podman ?

Aperçu de Podman

Podman (Pod Manager) est un outil de gestion de conteneurs de nouvelle génération développé par une communauté dirigée par Red Hat. Comme Docker, il peut créer, exécuter et gérer des conteneurs conformes à OCI, mais sa conception et son architecture diffèrent de manière significative.

La plus grande caractéristique de Podman est qu’il ne nécessite pas de démon en arrière-plan. Cela permet une opération légère et sécurisée. Podman prend également en charge le mode sans privilèges, permettant aux utilisateurs ordinaires de gérer les conteneurs sans privilèges élevés. L’interface en ligne de commande est hautement compatible avec Docker, de sorte que la plupart des commandes sont presque identiques.

Fonctionnalités clés de Podman

Voici quelques fonctionnalités notables de Podman :

Architecture sans démon

Podman fonctionne sans démon en arrière-plan (processus résident) pour la gestion des conteneurs. Cela entraîne une utilisation efficace des ressources, sans processus d’arrière-plan inutiles.

Support sans privilèges (utilisateurs non privilégiés)

Podman permet aux utilisateurs ordinaires d’exécuter et de gérer des conteneurs sans privilèges d’administrateur. Cela rend possible l’exploitation sécurisée des conteneurs dans des environnements multi-utilisateurs ou serveurs, réduisant considérablement les risques de sécurité.

CLI compatible Docker

Podman utilise une structure de commande presque identique à Docker. Par exemple, les commandes Docker suivantes fonctionnent presque de la même manière dans Podman :

podman build -t myimage .
podman run -it myimage bash

Cela permet aux utilisateurs familiers avec Docker de passer sans problème à Podman.

Fonctionnalité Pod

Podman adopte le concept de « Pod » de Kubernetes, vous permettant de gérer plusieurs conteneurs comme une seule unité logique. Cela augmente la compatibilité avec Kubernetes et permet une migration fluide des environnements locaux vers le cloud.

Compatibilité avec Ubuntu

Bien que Podman soit largement adopté sur les distributions Fedora et basées sur RHEL, il fonctionne également de manière stable sur Ubuntu. Vous pouvez l’installer depuis les dépôts officiels, et la configuration est simple. En particulier depuis Ubuntu 20.04 LTS, la maintenance des paquets s’est améliorée, réduisant la barrière à l’adoption.

3. Installation de Podman sur Ubuntu

Before You Begin: Pre-Installation Checklist

Avant d’installer Podman sur Ubuntu, vérifiez d’abord votre version d’Ubuntu. Podman est recommandé pour Ubuntu 20.04 LTS ou une version ultérieure. Les versions plus anciennes peuvent ne pas contenir les paquets requis dans le dépôt officiel.

Vérifiez votre version d’Ubuntu avec la commande suivante :

lsb_release -a

L’installation de Podman nécessite sudo privilèges. Même si vous prévoyez d’utiliser le mode sans privilèges root, des droits d’administrateur sont nécessaires pour l’installation initiale, assurez‑vous donc de les posséder.

Installing Podman (Ubuntu Official Repository)

Sur Ubuntu 20.04, 22.04 ou une version ultérieure, vous pouvez installer facilement Podman avec APT :

sudo apt update
sudo apt install -y podman

Après l’installation, vérifiez la version pour confirmer que tout s’est bien installé :

podman --version

How to Get the Latest Version (Official PPA)

Le paquet Podman dans le dépôt Ubuntu standard n’est peut‑être pas le plus récent. Si vous souhaitez les dernières fonctionnalités, utilisez le Personal Package Archive (PPA) officiel:

. /etc/os-release
echo "deb https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/xUbuntu_${VERSION_ID}/ /" | sudo tee /etc/apt/sources.list.d/devel:kubic:libcontainers:stable.list
curl -L https://download.opensuse.org/repositories/devel:kubic:libcontainers:stable/xUbuntu_${VERSION_ID}/Release.key | sudo apt-key add -
sudo apt update
sudo apt install -y podman

Cela vous donne accès à la dernière version de Podman, équivalente aux écosystèmes Red Hat et Fedora.

Basic Podman Functionality Test

Après l’installation, effectuez une vérification rapide :

podman info

Cette commande affiche la version de Podman, sa configuration et les fonctionnalités prises en charge, comme le mode sans privilèges root.

Testez le téléchargement et l’exécution d’un conteneur officiel Alpine Linux :

podman run --rm -it alpine sh

Si le shell se lance correctement, votre installation de Podman fonctionne correctement.

4. Utilisation d’un Dockerfile avec Podman

Qu’est‑ce qu’un Dockerfile ?

Un Dockerfile est un plan pour créer des images de conteneur. C’est un fichier texte qui répertorie l’image de base, les paquets à installer, les fichiers à copier et les autres instructions dans l’ordre.

Les outils de conteneur comme Podman et Docker peuvent créer automatiquement un environnement cohérent basé sur ce fichier.

Exemples d’instructions :

FROM ubuntu:22.04
RUN apt update && apt install -y curl
COPY ./app.sh /usr/local/bin/app.sh
CMD ["bash", "/usr/local/bin/app.sh"]

Cela installe des paquets, copie des scripts et définit ce qui doit s’exécuter par défaut dans l’image résultante.

Comment utiliser Dockerfile avec Podman

Vous pouvez créer des images de conteneur à partir de Dockerfiles avec Podman, presque exactement comme vous le feriez avec Docker.

1. Préparer le répertoire

Organisez vos fichiers comme suit :

project/
├── Dockerfile
└── app.sh

app.sh peut être un script simple :

#!/bin/bash
echo "Hello from Podman container!"

Rendez le script exécutable :

chmod +x app.sh

2. Construire avec Podman

Avec le Dockerfile dans votre répertoire actuel, exécutez :

podman build -t mypodmanapp .

Cela crée une image de conteneur appelée mypodmanapp.

3. Vérifier le résultat de la construction

Voir l’image créée avec :

podman images

4. Exécuter le conteneur

Démarrez un conteneur à partir de votre image construite :

podman run --rm mypodmanapp

Si tout est correctement configuré, vous verrez : Hello from Podman container!

Différence avec Containerfile

Podman prend en charge les fichiers nommés Containerfile, qui utilisent la même syntaxe que Dockerfile. C’est simplement un nom neutre, non lié à la marque Docker.

La fonctionnalité est identique. Que vous nommiez votre fichier Dockerfile ou Containerfile, Podman l’utilisera :

podman build -f Containerfile -t myimage .

Il suffit de spécifier le nom de fichier avec l’option -f si nécessaire.

5. Exemple pratique : construction d’un conteneur basé sur Ubuntu

Créer un Dockerfile basé sur Ubuntu

Parcourons la création d’un Dockerfile basé sur Ubuntu et la construction et l’exécution d’une image de conteneur avec Podman étape par étape.

Voici un exemple simple de Dockerfile :

FROM ubuntu:22.04

RUN apt update && 
    apt install -y curl && 
    apt clean

COPY hello.sh /usr/local/bin/hello.sh
RUN chmod +x /usr/local/bin/hello.sh

CMD ["/usr/local/bin/hello.sh"]

Ce Dockerfile :

  • Utilise l’image officielle Ubuntu 22.04
  • Installe le paquet curl
  • Copie hello.sh depuis l’hôte dans le conteneur
  • Définit hello.sh comme script par défaut

Maintenant, créez un script hello.sh simple :

#!/bin/bash
echo "Hello from a Podman container!"

Donnez-lui les permissions d’exécution :

chmod +x hello.sh

Construire l’image avec Podman

Une fois vos fichiers prêts, construisez l’image avec :

podman build -t ubuntu-hello .

Le drapeau -t ubuntu-hello étiquette votre image ; le . spécifie le répertoire de construction.

Si la construction réussit, vous verrez votre nouvelle image listée avec :

podman images

Exécuter et tester l’image

Lancez un conteneur à partir de votre nouvelle image :

podman run --rm ubuntu-hello

Exemple de sortie :

Hello from a Podman container!

L’option --rm supprime automatiquement le conteneur après son arrêt, idéal pour les tests.

Astuce : accès interactif au conteneur

Si vous souhaitez travailler de façon interactive à l’intérieur du conteneur, utilisez l’option -it pour lancer Bash :

podman run -it ubuntu-hello bash

Cela vous fournit un environnement de développement Ubuntu léger à l’intérieur de votre conteneur.

6. Fonctionnalités et astuces de Podman

Points forts de Podman : flexibilité et sécurité

Podman offre plus grande flexibilité et sécurité renforcée tout en restant compatible avec Docker. Voici quelques fonctionnalités utiles et des conseils d’utilisation au quotidien.

Opérations sécurisées en mode sans privilèges

L’un des principaux atouts de Podman est le mode sans privilèges, qui permet aux utilisateurs non‑root d’exécuter, d’arrêter et de gérer des conteneurs.

Par exemple, vous pouvez utiliser Podman sans sudo :

podman run -it ubuntu bash

Les opérations sont limitées au répertoire personnel de l’utilisateur, minimisant les risques pour le système. Cela est particulièrement utile sur des serveurs partagés ou dans des environnements de développement.

Intégration avec systemd pour le démarrage automatique

Podman peut s’intégrer nativement à systemd, ce qui permet aux conteneurs de démarrer automatiquement comme services Linux.

Générez un fichier d’unité systemd avec :

podman generate systemd --name mycontainer --files --restart-policy=always

Cela crée un fichier d’unité dans ~/.config/systemd/user/. Activez‑le et lancez‑le avec :

systemctl --user daemon-reexec
systemctl --user enable --now container-mycontainer.service

Les conteneurs redémarreront désormais automatiquement même après le redémarrage du serveur.

Gestion de plusieurs conteneurs avec podman-compose

En plus des opérations sur un seul conteneur, Podman prend en charge la gestion multi‑conteneurs. En utilisant podman-compose, vous pouvez gérer des projets complexes de la même manière que Docker Compose.

Installez avec pip :

pip install podman-compose

Comme il est compatible avec les fichiers docker-compose.yml, la migration des projets est simple.

Pour démarrer les services, il suffit d’exécuter :

podman-compose up -d

Podman vous permet de reproduire instantanément des environnements de développement.

Autres commandes utiles et astuces

Nettoyer les images et conteneurs inutilisés

podman system prune -a

Supprimez les fichiers et images inutilisés pour libérer de l’espace de stockage.

Complétion shell (bash/zsh)

Installez les scripts de complétion de Podman pour faciliter l’utilisation en ligne de commande :

sudo apt install podman-docker

Cela active la complétion de commandes, similaire à Docker, pour la commande podman.

7. Migration de Docker vers Podman

Pourquoi la migration vers Podman est en vogue

Alors que Docker a longtemps été le standard de facto pour les conteneurs, Podman gagne en popularité grâce à sa légèreté et à sa sécurité renforcée. Red Hat Enterprise Linux (RHEL) et Fedora sont passés de Docker à Podman par défaut, incitant de nombreuses équipes à envisager la migration.

Cette section couvre les étapes pratiques et les points à considérer pour migrer de Docker vers Podman.

Compatibilité des commandes : Docker vs. Podman

Podman est hautement compatible avec les commandes Docker, vous pouvez donc les remplacer généralement directement :

DockerPodman
docker build -t myapp .podman build -t myapp .
docker run -it myapppodman run -it myapp
docker imagespodman images
docker pspodman ps

Cette compatibilité CLI transparente est un avantage majeur de Podman.

Obtenir une compatibilité totale avec podman-docker

Si vos scripts ou pipelines CI/CD utilisent les commandes docker, l’installation du paquet podman-docker permet à Podman de servir de remplacement direct :

sudo apt install podman-docker

Cela configure la commande docker comme un lien symbolique vers Podman :

which docker
# → /usr/bin/docker → podman symlink

Vous pouvez alors exécuter les scripts Docker sans modification.

Alternative à Docker Compose : podman-compose

Si vous utilisez Docker Compose pour des projets multi-conteneurs, podman-compose offre une fonctionnalité similaire.

Il est très compatible mais certaines options de Compose peuvent différer (par ex. depends_on), et la journalisation des événements ou les vérifications de santé peuvent se comporter différemment. Pour les piles web + DB de base, la migration est généralement fluide.

Migrer les images & les volumes

Les images Docker locales ne sont pas visibles par défaut dans Podman. Vous pouvez :

Option 1 : Re‑tirer avec Podman

podman pull ubuntu:22.04

Option 2 : Exporter depuis Docker → Importer vers Podman

# Export with Docker
docker save myimage > myimage.tar

# Import with Podman
podman load < myimage.tar

Cela rend les images construites avec Docker disponibles dans Podman.

Autres considérations

  • Opération sans privilèges root : Docker s’exécute généralement en tant que root, tandis que Podman est conçu pour fonctionner sans privilèges root par défaut
  • Structure du démon : Podman est sans démon, donc la gestion des processus diffère
  • Emplacements des journaux et du stockage des données peuvent différer — vérifiez les configurations lors de la migration

8. Questions fréquemment posées (FAQ)

Q1. Quelles sont les principales différences entre Podman et Docker ?

A1. La plus grande différence est que Podman est « sans démon » (ne nécessite aucun processus en arrière-plan), ce qui le rend plus léger et plus sécurisé. Podman prend également en charge le mode sans privilèges, permettant aux utilisateurs de gérer les conteneurs sans élévation de privilèges. La compatibilité de la CLI est élevée, donc la plupart des commandes sont les mêmes.

Q2. Existe-t-il une différence entre Dockerfile et Containerfile ?

A2.__224__ Il n’y a aucune différence fonctionnelle. Les deux sont des fichiers décrivant comment construire des conteneurs, avec une syntaxe identique. Certains projets préfèrent « Containerfile » comme nom neutre, mais vous pouvez utiliser l’un ou l’autre avec Podman.

Q3. Puis-je utiliser des fichiers Docker Compose avec Podman ?

A3. Podman ne prend pas en charge Docker nativement, mais vous pouvez utiliser podman-compose (un outil Python) pour interpréter et exécuter les fichiers docker-compose.yml dans un environnement Podman.

Certaines options de Compose (depends_on, etc.) peuvent avoir des limitations, il est donc recommandé de tester les configurations complexes à l’avance.

Q4. Podman est-il stable sur Ubuntu ?

A4. Oui, Podman fonctionne de manière fiable sur Ubuntu 20.04 LTS et versions ultérieures. Il est disponible dans les dépôts officiels d’Ubuntu et peut être installé avec apt. Pour la version la plus récente, vous pouvez utiliser le PPA officiel.

Q5. Existe-t-il des restrictions d’accès en mode rootless ?

A5. En mode rootless, certaines opérations privilégiées et la liaison aux ports inférieurs à 1024 sont restreintes. Le transfert de ports peut contourner cela. Pour la plupart des cas d’utilisation, le mode rootless est pratique et recommandé.

Q6. Podman peut-il récupérer des images depuis Docker Hub ?

A6. Oui, Podman peut récupérer des images depuis Docker Hub par défaut. Parfois, il peut être nécessaire de spécifier le chemin complet du registre, par exemple docker.io/library/ubuntu :

podman pull docker.io/library/ubuntu

Podman prend également en charge des registres comme Quay.io et GitHub Container Registry.

Q7. Podman est-il adapté à une utilisation en production ?

A7. Oui, Podman inclut des concepts de pod compatibles Kubernetes et une intégration systemd pour le démarrage automatique, ce qui le rend adapté aux environnements de production—en particulier là où une forte sécurité est requise. Podman est désormais le défaut sur Red Hat Enterprise Linux et Fedora, avec une large adoption.

侍エンジニア塾