Remarques :

Configuration de l'interaction utilisateur avec Podman sur Oracle Linux

Introduction

Systemd fournit des services utilisateur persistants, permettant aux services utilisateur (tels que les conteneurs lancés avec des unités utilisateur systemd) de rester actifs une fois l'utilisateur déconnecté. Sans cela, les gestionnaires de service utilisateur (et leurs conteneurs) sont arrêtés lors de la déconnexion.

Objectifs

Dans ce tutoriel, vous allez apprendre à :

Prérequis

Déployer Oracle Linux

Remarque : si vous êtes en cours d'exécution dans votre propre location, lisez le projet linux-virt-labs GitHub README.md et complétez les prérequis avant de déployer l'environnement d'exercice.

  1. Ouvrez un terminal sur le bureau Luna.

  2. Clonez le projet linux-virt-labs GitHub.

    git clone https://github.com/oracle-devrel/linux-virt-labs.git
    
  3. Accédez au répertoire de travail.

    cd linux-virt-labs/ol
    
  4. Installez les ensembles requis.

    ansible-galaxy collection install -r requirements.yml
    
  5. Déployez l'environnement d'exercice.

    ansible-playbook create_instance.yml -e localhost_python_interpreter="/usr/bin/python3.6" -e use_podman=true -e update_all=true -e os_version="9"
    

    L'environnement d'exercice libre requiert la variable supplémentaire local_python_interpreter, qui définit ansible_python_interpreter pour les lectures exécutées sur localhost. Cette variable est nécessaire car l'environnement installe le package RPM pour le kit SDK Oracle Cloud Infrastructure pour Python, situé sous les modules python3.6.

    La forme de déploiement par défaut utilise l'UC AMD et Oracle Linux 8. Pour utiliser une CPU Intel ou Oracle Linux 9, ajoutez -e instance_shape="VM.Standard3.Flex" ou -e os_version="9" à la commande de déploiement.

    Important : attendez que le guide de lecture s'exécute correctement et atteignez la tâche de pause. A ce stade du manuel, l'installation d'Oracle Linux est terminée et les instances sont prêtes. Prenez note de la lecture précédente, qui affiche les adresses IP publiques et privées des noeuds qu'elle déploie et toutes les autres informations de déploiement nécessaires lors de l'exécution de l'exercice.

Confirmer le fonctionnement de Podman

Le package container-tools d'Oracle Linux fournit les dernières versions de Podman, Buildah, Skopeo et les dépendances associées.

  1. Ouvrez un terminal et connectez-vous via SSH à l'instance ol-node-01.

    ssh oracle@<ip_address_of_instance>
    
  2. Vérification de la version de Podman.

    podman -v
    
  3. Vérifiez que l'interface de ligne de commande Podman fonctionne.

    podman run quay.io/podman/hello
    

    Exemple de résultat :

    [oracle@ol-server ~]$ podman run quay.io/podman/hello
    Trying to pull quay.io/podman/hello:latest...
    Getting image source signatures
    Copying blob f82b04e85914 done
    Copying config dbd85e09a1 done
    Writing manifest to image destination
    Storing signatures
    !... Hello Podman World ...!
    
             .--"--.
           / -     - \
          / (O)   (O) \
       ~~~| -=(,Y,)=- |
        .---. /`  \   |~~
     ~/  o  o \~~~~.----. ~~
      | =(X)= |~  / (O (O) \
       ~~~~~~~  ~| =(Y_)=-  |
      ~~~~    ~~~|   U      |~~
    
    Project:   https://github.com/containers/podman
    Website:   https://podman.io
    Documents: https://docs.podman.io
    Twitter:   @Podman_io
    

Activer l'analyse pour un utilisateur

Le nom utilisateur utilisé pour ce tutoriel est oracle.

  1. Activez la persistance pour l'utilisateur oracle.

    sudo loginctl enable-linger oracle
    

Création d'un fichier d'unité systemd pour Podman

  1. Créez un répertoire pour le fichier d'unités systemd.

    mkdir -p ~/.config/systemd/user
    
  2. Créez le fichier d'unités Systemd.

    cat << EOF | tee ~/.config/systemd/user/mycontainer.service > /dev/null
    [Unit]
    Description=My Podman Container
    
    [Service]
    Restart=always
    ExecStart=/usr/bin/podman run --rm --name mycontainer ghcr.io/oracle/oraclelinux9-nginx:1.20
    ExecStop=/usr/bin/podman stop -t 10 mycontainer
    
    [Install]
    WantedBy=default.target
    EOF
    
  3. Démarrez et activez le service Systemd.

    systemctl --user daemon-reload
    systemctl --user enable --now mycontainer.service
    

Confirmer le démarrage de Systemd Podman

  1. Confirmez que le service a démarré Podman.

    podman ps
    

    Exemple de résultat :

    [oracle@ol-node-01 ~]$ podman ps
    CONTAINER ID  IMAGE                                   COMMAND               CREATED        STATUS        PORTS            NAMES
    9ada6b5a635f  ghcr.io/oracle/oraclelinux9-nginx:1.20  nginx -g daemon o...  4 minutes ago  Up 4 minutes  80/tcp, 443/tcp  mycontainer
    
  2. Vérifiez l'état du service systemd.

    systemctl --user status mycontainer.service
    

    Exemple de résultat :

    [oracle@ol-node-01 ~]$ systemctl --user status mycontainer.service 
    ● mycontainer.service - My Podman Container
         Loaded: loaded (/home/oracle/.config/systemd/user/mycontainer.service; enabled; preset: disabled)
         Active: active (running) since Wed 2025-09-03 15:18:52 GMT; 1min 4s ago
       Main PID: 42554 (podman)
          Tasks: 22 (limit: 201624)
         Memory: 367.0M
            CPU: 7.432s
         CGroup: /user.slice/user-1001.slice/user@1001.service/app.slice/mycontainer.service
                 ├─42554 /usr/bin/podman run --rm --name mycontainer ghcr.io/oracle/oraclelinux9-nginx:1.20
                 ├─42562 /usr/bin/podman run --rm --name mycontainer ghcr.io/oracle/oraclelinux9-nginx:1.20
                 ├─42567 catatonit -P
                 ├─42631 /usr/bin/pasta --config-net --dns-forward 169.254.1.1 -t none -u none -T none -U none --no-map-gw --quiet --net>
                 └─42634 /usr/bin/conmon --api-version 1 -c 9ada6b5a635f05242af94d921c045355a02ff1c5c6843b9b77d4797e6cc48947 -u 9ada6b5a>
    
    Sep 03 15:18:53 ol-node-01 podman[42562]: Getting image source signatures
    Sep 03 15:18:53 ol-node-01 podman[42562]: Copying blob sha256:dc9d5c72c83dcb74035f5659842a5bbdb9ceaaab724e942d1fafba3d9a66583d
    Sep 03 15:18:53 ol-node-01 podman[42562]: Copying blob sha256:768ce871c381eaff86a716a68d16a5fe365a62f4d44ae38e9e8b1ed8fd5bf4bd
    Sep 03 15:18:57 ol-node-01 podman[42562]: Copying config sha256:86da1899be3dbf9500534c241500247aa0467c76ebbeb2431e42433dcf3e4df2
    Sep 03 15:18:57 ol-node-01 podman[42562]: Writing manifest to image destination
    Sep 03 15:18:58 ol-node-01 podman[42562]: 2025-09-03 15:18:58.037335665 +0000 GMT m=+5.552269770 container create 9ada6b5a635f05242a>
    Sep 03 15:18:58 ol-node-01 podman[42562]: 2025-09-03 15:18:58.025938165 +0000 GMT m=+5.540872270 image pull 86da1899be3dbf9500534c24>
    Sep 03 15:18:58 ol-node-01 podman[42562]: 2025-09-03 15:18:58.150895821 +0000 GMT m=+5.665829926 container init 9ada6b5a635f05242af9>
    Sep 03 15:18:58 ol-node-01 podman[42562]: 2025-09-03 15:18:58.156268852 +0000 GMT m=+5.671202956 container start 9ada6b5a635f05242af>
    
    

    Cela confirme que systemd a démarré un conteneur Nginx dans Podman. Mais reste-t-il actif si vous déconnectez ?

  3. Saisissez Ctrl-C pour quitter la sortie de statut.

Confirmer le service restant actif après la déconnexion

Ensuite, vous allez quitter la session en cours, puis vous reconnecter pour confirmer que le service Podman reste actif.

  1. Entrez exit pour quitter la session en cours.

  2. Reconnectez-vous via SSH à l'instance ol-node-01 à l'aide de la même chaîne de connexion que celle utilisée pour la connexion initiale.

    ssh oracle@<ip_address_of_instance>
    
  3. Vérifiez que le service Podman est actif.

    podman ps
    
  4. Vérifiez l'état du service systemd.

    systemctl --user status mycontainer.service
    

Etapes suivantes

Ce tutoriel explique comment configurer User Lingering avec Podman. L'activation de la persistance permet à vos conteneurs Podman de s'exécuter en continu en tant que service utilisateur sur Oracle Linux, même après votre déconnexion. Cette approche s'aligne sur les meilleures pratiques innovantes de gestion de conteneurs sans racine. Consultez le module de formation Oracle Linux pour obtenir des tutoriels et du contenu supplémentaires.

Ressources de formation supplémentaires

Explorez d'autres ateliers sur le site docs.oracle.com/learn ou accédez à d'autres contenus d'apprentissage gratuits sur le canal Oracle Learning YouTube. En outre, visitez le site education.oracle.com/learning-explorer pour devenir un explorateur Oracle Learning.

Pour obtenir de la documentation sur le produit, consultez Oracle Help Center.