GNU/Linux >> Tutoriels Linux >  >> Linux

Comment exécuter des conteneurs en tant que service Systemd avec Podman

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


Linux
  1. Comment créer un service Systemd sous Linux

  2. Linux - Comment obtenir moins de Ttys avec Systemd ?

  3. Comment rediriger la sortie du service systemd vers un fichier

  4. Comment arrêter le service systemd

  5. Comment exécuter un script avec systemd juste avant l'arrêt ?

Comment exécuter un script Shell en tant que service Systemd sous Linux

Gestion des cgroups avec systemd

Comment exécuter Podman sous Windows

Comment exécuter des pods en tant que services systemd avec Podman

Comment exécuter un script Shell en tant que service SystemD sous Linux

Comment exécuter un alias avec Sudo sous Linux