Hinweis:

Benutzer-Lingering mit Podman auf Oracle Linux konfigurieren

Einführung

Systemd bietet Benutzer-Lingering, sodass Benutzerservices (wie Container, die mit systemd-Benutzereinheiten gestartet werden) aktiv bleiben, nachdem sich der Benutzer abgemeldet hat. Ohne diese Einstellung werden User Service Manager (und deren Container) bei der Abmeldung gestoppt.

Ziele

In diesem Tutorial lernen Sie:

Voraussetzungen

Oracle Linux bereitstellen

Hinweis: Wenn Sie in Ihrem eigenen Mandanten ausgeführt werden, lesen Sie das Projekt linux-virt-labs GitHub README.md, und schließen Sie die Voraussetzungen ab, bevor Sie die Übungsumgebung bereitstellen.

  1. Öffnen Sie ein Terminal auf dem Luna Desktop.

  2. Klonen Sie das Projekt linux-virt-labs GitHub.

    git clone https://github.com/oracle-devrel/linux-virt-labs.git
    
  3. Wechseln Sie in das Arbeitsverzeichnis.

    cd linux-virt-labs/ol
    
  4. Installieren Sie die erforderlichen Sammlungen.

    ansible-galaxy collection install -r requirements.yml
    
  5. Bereitstellen der Übungsumgebung.

    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"
    

    Die kostenlose Übungsumgebung erfordert die zusätzliche Variable local_python_interpreter, die ansible_python_interpreter für Wiedergaben festlegt, die auf localhost ausgeführt werden. Diese Variable ist erforderlich, da die Umgebung das RPM-Package für das Oracle Cloud Infrastructure-SDK für Python unter den python3.6-Modulen installiert.

    Die Standard-Deployment-Ausprägung verwendet AMD-CPU und Oracle Linux 8. Um eine Intel CPU oder Oracle Linux 9 zu verwenden, fügen Sie dem Deployment-Befehl -e instance_shape="VM.Standard3.Flex" oder -e os_version="9" hinzu.

    Wichtig: Warten Sie, bis das Playbook erfolgreich ausgeführt wird, und erreichen Sie die Unterbrechungsaufgabe. In dieser Phase des Playbooks ist die Installation von Oracle Linux abgeschlossen, und die Instanzen sind bereit. Notieren Sie sich die vorherige Wiedergabe, in der die öffentlichen und privaten IP-Adressen der bereitgestellten Knoten und alle anderen Deployment-Informationen gedruckt werden, die während der Ausführung der Übung erforderlich sind.

Podman-Arbeiten bestätigen

Das Container-Tool-Package in Oracle Linux stellt die neuesten Versionen von Podman, Buildah, Skopeo und zugehörigen Abhängigkeiten bereit.

  1. Öffnen Sie ein Terminal, und verbinden Sie sich über SSH mit der Instanz ol-node-01.

    ssh oracle@<ip_address_of_instance>
    
  2. Prüfen Sie die Version von Podman.

    podman -v
    
  3. Stellen Sie sicher, dass die Podman-CLI funktioniert.

    podman run quay.io/podman/hello
    

    Beispielausgabe:

    [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
    

Lingering für einen Benutzer aktivieren

Der für dieses Tutorial verwendete Benutzername lautet oracle.

  1. Aktivieren Sie Lingering für den Benutzer oracle.

    sudo loginctl enable-linger oracle
    

Systemd Unit-Datei für Podman erstellen

  1. Erstellen Sie ein Verzeichnis für die systemd unit-Datei.

    mkdir -p ~/.config/systemd/user
    
  2. Erstellen Sie die Systemd Unit-Datei.

    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. Starten und aktivieren Sie den Systemd-Service.

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

Bestätigen, dass Systemd gestartet wurde Podman

  1. Bestätigen Sie, dass der Service Podman gestartet hat.

    podman ps
    

    Beispielausgabe:

    [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. Prüfen Sie den Status des systemd-Service.

    systemctl --user status mycontainer.service
    

    Beispielausgabe:

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

    Dadurch wird bestätigt, dass systemd einen Nginx-Container in Podman gestartet hat. Aber bleibt es aktiv, wenn Sie sich abmelden?

  3. Geben Sie Ctrl-C ein, um die Statusausgabe zu beenden.

Verbleibenden aktiven Service nach Abmeldung bestätigen

Als Nächstes beenden Sie die aktuelle Session und melden sich erneut an, um zu bestätigen, dass der Podman-Service weiterhin aktiv ist.

  1. Geben Sie exit ein, um die aktuelle Session zu verlassen.

  2. Stellen Sie über SSH erneut eine Verbindung zur Instanz ol-node-01 her, und verwenden Sie dabei dieselbe Verbindungszeichenfolge, die Sie ursprünglich für die Verbindung verwendet haben.

    ssh oracle@<ip_address_of_instance>
    
  3. Stellen Sie sicher, dass der Podman-Dienst aktiv ist.

    podman ps
    
  4. Prüfen Sie den Status des systemd-Service.

    systemctl --user status mycontainer.service
    

Nächste Schritte

In diesem Tutorial wurde gezeigt, wie Sie User Lingering mit Podman konfigurieren. Wenn Sie Lingering aktivieren, können Ihre Podman-Container auch nach der Abmeldung kontinuierlich als Benutzerservice auf Oracle Linux ausgeführt werden. Dieser Ansatz entspricht modernen Best Practices für das rootenlose Containermanagement. Weitere Tutorials und Inhalte finden Sie in der Oracle Linux-Schulungsstation.

Weitere Lernressourcen

Sehen Sie sich weitere Übungen zu docs.oracle.com/learn an, oder greifen Sie auf weitere kostenlose Lerninhalte im Oracle Learning YouTube-Kanal zu. Besuchen Sie außerdem education.oracle.com/learning-explorer, um ein Oracle Learning Explorer zu werden.

Die Produktdokumentation finden Sie im Oracle Help Center.