Aller au contenu

Introduction

Podman est un environnement d'exécution de conteneur alternatif compatible Docker qui, contrairement à Docker, est inclus dans les référentiels de Rocky Linux et peut exécuter des conteneurs en tant que service systemd.

Installation de Podman

Utilisez l'utilitaire dnf pour installer Podman :

dnf install podman

Ajout de Conteneur

Prenons l'exemple d'une plateforme cloud auto-hébergée Nextcloud :

podman run -d -p 8080:80 nextcloud

Vous recevrez une invite pour sélectionner le registre de conteneurs à partir duquel télécharger. Dans notre exemple, nous utiliserons docker.io/library/nextcloud:latest.

Une fois que vous aurez téléchargé le conteneur Nextcloud, il s'exécutera.

Saisissez ip_address:8080 dans votre navigateur Web (en supposant que vous ayez ouvert le port dans firewalld) et configurez Nextcloud :

Nextcloud in container

Execution de conteneurs en tant que services systemd

Utilisation de quadlet

Depuis la version 4.4, Podman est livré avec Quadlet, un générateur systemd qui peut générer des fichiers unit pour les services systemd rootless et rootful.

Les fichiers Quadlet pour les services rootful peuvent être placés dans

  • /etc/containers/systemd/
  • /usr/share/containers/systemd/

tandis que les fichiers rootless peuvent être placés dans l'un d'eux

  • $XDG_CONFIG_HOME/containers/systemd/ ou bien ~/.config/containers/systemd/
  • /etc/containers/systemd/users/$(UID)
  • /etc/containers/systemd/users/

Bien que les conteneurs uniques, les pods, les images, les réseaux, les volumes et les fichiers Kube soient pris en charge, concentrons-nous sur notre exemple Nextcloud. Créez un nouveau fichier ~/.config/containers/systemd/nextcloud.container avec le contenu suivant :

[Container]
Image=nextcloud
PublishPort=8080:80

De nombreuses autres options sont disponibles.

Pour exécuter le générateur et informer systemd qu'il existe un nouveau service, exécutez la commande suivante :

systemctl --user daemon-reload

Pour activer votre service lancez la commande suivante :

systemctl --user start nextcloud.service

Remarque

Si vous avez créé un fichier dans l'un des répertoires des services root, omettez l'indicateur `--user`.

Pour exécuter automatiquement le conteneur au démarrage du système ou à la connexion de l'utilisateur, vous pouvez ajouter une autre section à votre fichier nextcloud.container :

[Install]
WantedBy=default.target

Étant donné que les fichiers de service générés sont considérés comme transitoires, ils ne peuvent pas être activés par systemd. Pour atténuer ce problème, le générateur applique manuellement les installations pendant la génération. Cela active également efficacement ces fichiers de services.

D'autres types de fichiers sont pris en charge : pod, volume, network, image° etkube`. Les Pods, par exemple, peuvent être utilisés pour regrouper des conteneurs – les services systemd générés et leurs dépendances (créer le pod avant les conteneurs) sont automatiquement gérés par systemd.

Utilisation de podman generate systemd

Podman fournit également la sous-commande generate systemd. Il peut être utilisé pour générer des fichiers de service systemd.

Avertissement

`generate systemd` est désormais obsolète et ne recevra plus de fonctionnalités supplémentaires. L'utilisation de Quadlet est recommandée.

Faisons-le désormais avec Nextcloud. Exécuter :

podman ps

Vous obtiendrez une liste des conteneurs en cours d’exécution :

04f7553f431a  docker.io/library/nextcloud:latest  apache2-foregroun...  5 minutes ago  Up 5 minutes  0.0.0.0:8080->80/tcp  compassionate_meninsky

Comme vu ci-dessus, le nom du conteneur est compassionate_meninsky.

Pour créer un service systemd pour le conteneur Nextcloud et l'activer au redémarrage, exécutez la commande suivante :

podman generate systemd --name compassionate_meninsky > /usr/lib/systemd/system/nextcloud.service
systemctl enable nextcloud

Remplacez compassionate_meninsky par le nom attribué à votre conteneur.

Lorsque votre système sera relancé, Nextcloud redémarrera dans Podman.

Author: Neel Chauhan

Contributors: Steven Spencer, Ganna Zhyrnova, Christian Steinert