Nota

Configura il coinvolgimento degli utenti con Podman su Oracle Linux

Introduzione

Systemd consente all'utente di rimanere attivo dopo il logout, consentendo ai servizi utente (come i container avviati con unità utente systemd). In caso contrario, i responsabili del servizio utenti (e i relativi contenitori) vengono arrestati al logout.

Obiettivi

In questo tutorial imparerai a:

Prerequisiti

Implementa Oracle Linux

Nota: se è in esecuzione nella propria tenancy, leggere il progetto linux-virt-labs GitHub README.md e completare i prerequisiti prima di distribuire l'ambiente di laboratorio.

  1. Aprire un terminale sul Luna Desktop.

  2. Duplicare il progetto linux-virt-labs GitHub.

    git clone https://github.com/oracle-devrel/linux-virt-labs.git
    
  3. Passare alla directory di lavoro.

    cd linux-virt-labs/ol
    
  4. Installare le raccolte richieste.

    ansible-galaxy collection install -r requirements.yml
    
  5. Implementare l'ambiente di laboratorio.

    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'ambiente di esercitazione pratica gratuito richiede l'aggiunta della variabile local_python_interpreter, che imposta ansible_python_interpreter per le riproduzioni eseguite su localhost. Questa variabile è necessaria perché l'ambiente installa il pacchetto RPM per l'SDK Oracle Cloud Infrastructure per Python, situato sotto i moduli python3.6.

    La forma di distribuzione predefinita utilizza la CPU AMD e Oracle Linux 8. Per utilizzare una CPU Intel o Oracle Linux 9, aggiungere -e instance_shape="VM.Standard3.Flex" o -e os_version="9" al comando di distribuzione.

    Importante: attendere che il playbook venga eseguito correttamente e raggiungere il task di sospensione. In questa fase del playbook, l'installazione di Oracle Linux è completa e le istanze sono pronte. Prendi nota del gioco precedente, che stampa gli indirizzi IP pubblici e privati dei nodi che distribuisce e qualsiasi altra informazione di distribuzione necessaria durante l'esecuzione del laboratorio.

Conferma funzionamento Podman

Il pacchetto di strumenti container in Oracle Linux fornisce le versioni più recenti di Podman, Buildah, Skopeo e delle dipendenze associate.

  1. Aprire un terminale e connettersi tramite SSH all'istanza ol-node-01.

    ssh oracle@<ip_address_of_instance>
    
  2. Controllare la versione di Podman.

    podman -v
    
  3. Verificare che l'interfaccia CLI Podman sia funzionante.

    podman run quay.io/podman/hello
    

    Output di esempio:

    [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
    

Abilita Lingering per un utente

Il nome utente utilizzato per questa esercitazione è oracle.

  1. Abilita il persistere per l'utente oracle.

    sudo loginctl enable-linger oracle
    

Creare un file di unità Systemd per Podman

  1. Creare una directory per il file systemd unit.

    mkdir -p ~/.config/systemd/user
    
  2. Creare il file di unità 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. Avviare e abilitare il servizio Systemd.

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

Conferma Podman avviato da Systemd

  1. Verificare che il servizio abbia avviato Podman.

    podman ps
    

    Output di esempio:

    [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. Controllare lo stato del servizio systemd.

    systemctl --user status mycontainer.service
    

    Output di esempio:

    [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>
    
    

    Ciò conferma che systemd ha avviato un contenitore Nginx in Podman. Ma rimane attivo se si esegue il logout?

  3. Digitare Ctrl-C per uscire dall'output dello stato.

Confermare che il servizio è rimasto attivo dopo il logout

Successivamente, si uscirà dalla sessione corrente e ci si riconnetterà per confermare che il servizio Podman rimane attivo.

  1. Immettere exit per uscire dalla sessione corrente.

  2. Riconnetti tramite SSH all'istanza ol-node-01 utilizzando la stessa stringa di connessione utilizzata inizialmente per la connessione.

    ssh oracle@<ip_address_of_instance>
    
  3. Verificare che il servizio Podman sia attivo.

    podman ps
    
  4. Controllare lo stato del servizio systemd.

    systemctl --user status mycontainer.service
    

Passi successivi

Questo tutorial ha dimostrato come configurare User Lingering con Podman. L'abilitazione persistente consente ai container Podman di essere eseguiti in modo continuo come servizio utente su Oracle Linux, anche dopo il logout. Questo approccio si allinea alle best practice moderne per la gestione dei container rootless. Controlla la stazione di formazione Oracle Linux per ulteriori esercitazioni e contenuti.

Altre risorse di apprendimento

Esplora altri laboratori su docs.oracle.com/learn o accedi a più contenuti di formazione gratuiti sul canale YouTube di Oracle Learning. Inoltre, visitare education.oracle.com/learning-explorer per diventare Oracle Learning Explorer.

Per la documentazione del prodotto, visitare Oracle Help Center.