Comme nous le savons, podman est un outil open source sans démon qui fournit un environnement pour créer, exécuter et gérer des conteneurs. L'exécution de conteneurs en tant que service systemd signifie que les conteneurs démarreront automatiquement lorsque le système sera redémarré.
Dans cet article, nous apprendrons comment exécuter des conteneurs en tant que service systemd avec podman sur des distributions basées sur RHEL telles que RHEL 8, CentOS 8 et Rocky Linux 8.
Prérequis :
- Installation minimale du système d'exploitation basée sur RHEL
- Connexion Internet stable
- Utilisateur Sudo avec privilèges root
Dans cette démonstration, j'utilise un minimum de RHEL 8.5, mais ces étapes s'appliquent également à CentOS 8 et Rocky Linux 8. Passons aux étapes,
Étape 1) Installer Podman
Pour installer podman sur RHEL 8 , exécutez
$ sudo dnf install @container-tools -y
Pour CentOS 8 / Rocky Linux 8, exécutez
$ sudo dnf install -y podman
Vérifier l'installation du podman
Pour vérifier si podman est installé avec succès ou non, essayez de faire tourner le conteneur "hello-world" à l'aide de la commande podman ci-dessous.
$ podman -v podman version 3.3.1 $ $ podman run 'hello-world'
Remarque :lorsque nous exécutons podman pour la première fois, il nous invite à choisir le registre dans lequel vous souhaitez télécharger l'image du conteneur.
La sortie de la commande ci-dessus aimerait ci-dessous :
Le préfet ci-dessus confirme que podman est installé avec succès. Passons à l'étape suivante.
Étape 2) Générer le service Systemd d'un conteneur
Supposons que nous voulions générer un service systemd pour le conteneur rsyslog. Lancez d'abord le conteneur rsyslog à l'aide des commandes podman suivantes,
$ podman run -d --name <Container-Name> <Image-Name>
Remarque :Si vous souhaitez télécharger l'image du conteneur rsyslog à partir d'un registre spécifique, utilisez la syntaxe suivante :
$ podman run -d --name container-name <registry-URL>/<image-name>
Dans cette démonstration, j'ai utilisé le registre Red Hat. Donc, connectez-vous d'abord au registre
$ podman login registry.access.redhat.com Username: <Specify-User-Name> Password: <Enter-Password> Login Succeeded! $
Essayez maintenant de faire tourner le conteneur à l'aide de la commande podman suivante,
$ podman run -d --name rsyslog-server registry.access.redhat.com/rhel7/rsyslog $ podman ps
Créez maintenant le service systemd pour le conteneur rsyslog-server, exécutez les commandes suivantes
$ mkdir -p .config/systemd/user $ cd .config/systemd/user/ $ podman generate systemd --name rsyslog-server --files --new /home/sysops/.config/systemd/user/container-rsyslog-server.service $
Comme nous pouvons ci-dessus, ce service systemd est créé.
Pour plus de détails sur la commande "podman generate systemd", consultez sa page d'aide
$ podman generate systemd --help
Étape 3) Démarrer et activer le service Container Systemd
Exécutez la commande systemctl suivante pour démarrer et activer le service systemd pour le conteneur rsyslog-server.
$ cd .config/systemd/user/ $ systemctl --user daemon-reload $ systemctl --user enable container-rsyslog-server.service $ systemctl --user restart container-rsyslog-server.service
Maintenant, vérifiez l'état du service systemd et l'état du conteneur, exécutez
$ systemctl --user status container-rsyslog-server.service $ podman ps
Maintenant, lorsque le système est redémarré, le conteneur sera automatiquement démarré via son service systemd. Alors redémarrons-le une fois et vérifions le service de conteneur.
$ sudo reboot
Une fois le système de nouveau en ligne, connectez-vous au système et vérifiez le service de conteneur
$ podman ps $ cd .config/systemd/user/ $ systemctl --user status container-rsyslog-server.service
Génial, cela confirme que le conteneur rsyslog-server est démarré automatiquement après le redémarrage via son service systemd.
C'est tout de ce post, j'espère que vous l'avez trouvé informatif. Veuillez partager vos commentaires et vos questions.
Lire aussi :Comment exécuter Jenkins Container en tant que service Systemd avec Docker