Nota

Esegui contenitori Podman sotto sistema con Quadlet

Introduzione

Quadlet offre un modo per eseguire i container in base a sistemi all'interno di Oracle Linux. Si definisce il contenitore da eseguire in una sezione [Container] in un formato familiare alla sintassi standard della riga di comando Podman e si sfruttano tutti i vantaggi delle opzioni [Unit] e [Service] di systemd. Il vantaggio di utilizzare systemd per eseguire i container è che systemd è integrato nel sistema operativo, in modo da poter avere contenitori che iniziano quando il sistema avvia o imposta l'ordine e la dipendenza tra una configurazione multi-container.

Quadlet sostituisce un vecchio metodo Podman utilizzato per l'integrazione con systemd. Tale metodo consiste nella creazione di un contenitore, nella generazione di un file di servizio, nello spostamento del file di servizio e quindi nell'abilitazione del servizio. In molti casi, gli utenti trascorrevano del tempo a scrivere questi passaggi negli script Bash e quindi a gestire tali script e i file generati. A seconda della prospettiva di un utente, Quadlet semplifica questo task.

Obiettivi

In questo tutorial imparerai a:

Prerequisiti

Distribuisci 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 esercitazione pratica.

  1. Aprire un terminale sul Luna Desktop.

  2. Duplica 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. Implementa 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 laboratorio gratuito richiede la variabile aggiuntiva local_python_interpreter, che imposta ansible_python_interpreter per le riproduzioni in esecuzione 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 la corretta esecuzione della guida e raggiungere il task di sospensione. In questa fase del playbook, l'installazione di Oracle Linux è completa e le istanze sono pronte. Prendi nota della riproduzione 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 Podman Works

Il pacchetto Container-tools in Oracle Linux fornisce le versioni più recenti di Podman, Buildah, Skopeo e le dipendenze associate.

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

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

    podman -v
    
  3. Verificare che l'interfaccia CLI di Podman funzioni.

    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
    

Crea un quadlet

Un Quadlet consiste semplicemente nella creazione di un file .container in una directory specifica contenente una sezione [Container] che descrive le opzioni di avvio del contenitore.

  1. Creare la directory systemd del contenitore degli utenti.

    mkdir -p ~/.config/containers/systemd
    
  2. Creare un file .container.

    cat << EOF | tee ~/.config/containers/systemd/test-ol.container > /dev/null
    [Unit]
    Description=My First Quadlet
    
    [Container]
    Image=ghcr.io/oracle/oraclelinux:9
    AutoUpdate=registry
    Exec=sleep 60
    
    [Service]
    Restart=always
    TimeoutStartSec=900
    
    [Install]
    WantedBy=multi-user.target default.target
    EOF
    

    Questo Quadlet esegue il contenitore Oracle Linux ed esegue un sleep 60 nel contenitore. Una volta completata l'operazione sleep 60, il contenitore viene chiuso e viene riavviato da systemd. Per la sezione [Container] sono disponibili altre opzioni e un elenco è disponibile nella documentazione a monte.

    Per ulteriori informazioni sulle opzioni [Service], [Unit] e [Install], vedere la pagina man systemd.unit(5).

  3. Abilita la permanenza per l'utente.

    sudo loginctl enable-linger oracle
    
  4. Informare systemd del nuovo file di unità.

    systemctl --user daemon-reload
    

    Questa operazione crea il file test-ol.service in base al file test-ol.container.

  5. Avviare il servizio.

    systemctl --user start test-ol.service
    

    Il servizio esegue podman per scaricare l'immagine di Oracle Linux e quindi emette sleep 60 all'interno dell'immagine del contenitore.

  6. Controllare lo stato del servizio.

    systemctl --user status test-ol.service
    

    Ripetere questo comando per visualizzare l'arresto e il riavvio del contenitore dopo l'esecuzione di sleep 60. È inoltre possibile controllare i log eseguendo sudo journalctl _SYSTEMD_USER_UNIT=test-ol.service.

  7. Aggiornare il contenitore.

    Con la voce AutoUpdate=registry nella sezione [Container], è possibile abilitare la funzione podman auto-update per aggiornare le immagini del contenitore. Tuttavia, se si desidera che ciò avvenga automaticamente anziché manualmente, è necessario abilitare anche il servizio richiesto.

    systemctl --user enable podman-auto-update
    

    È possibile eseguire manualmente podman auto-update --dry-run per verificare se è disponibile un aggiornamento. Dal momento che abbiamo appena scaricato l'ultima immagine qualche minuto fa, non ci sono aggiornamenti, e quindi, non c'è nulla da fare. Tuttavia, in caso di aggiornamento, è possibile rimuovere l'opzione --dry-run e podman estrarrà l'immagine più recente e riavvierà il contenitore.

Passi successivi

Questa esercitazione descrive come utilizzare Quadlet per gestire un contenitore minimo utilizzando systemd. Per saperne di più, leggi la documentazione e crea container aggiuntivi che sfruttano lo storage e hanno dipendenze multi-container.

Altre risorse di apprendimento

Esplora altri laboratori su docs.oracle.com/learn o accedi a più contenuti gratuiti sulla formazione su Oracle Learning YouTube channel. Inoltre, visita education.oracle.com/learning-explorer per diventare un Oracle Learning Explorer.

Per la documentazione del prodotto, visita l'Oracle Help Center.