Nota
- Questa esercitazione è disponibile in un ambiente di esercitazione pratica gratuito fornito da Oracle.
- Utilizza valori di esempio per le credenziali, la tenancy e i compartimenti di Oracle Cloud Infrastructure. Al termine del laboratorio, sostituisci questi valori con quelli specifici del tuo ambiente cloud.
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:
- Creare un file .container
- Avvia il nuovo servizio container
- Eseguire il test del contenitore
- Aggiorna il contenitore
Prerequisiti
-
Minimo di un singolo sistema Oracle Linux
-
Ogni sistema deve avere Oracle Linux installato e configurato con:
- Un account utente non root con accesso sudo
- Pacchetti Podman e cURL
- Gruppo C v2
- Accesso a Internet
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.
-
Aprire un terminale sul Luna Desktop.
-
Duplica il progetto
linux-virt-labs
GitHub.git clone https://github.com/oracle-devrel/linux-virt-labs.git
-
Passare alla directory di lavoro.
cd linux-virt-labs/ol
-
Installare le raccolte richieste.
ansible-galaxy collection install -r requirements.yml
-
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 impostaansible_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.
-
Aprire un terminale e connettersi tramite SSH all'istanza ol-node-01.
ssh oracle@<ip_address_of_instance>
-
Controlla la versione di Podman.
podman -v
-
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.
-
Creare la directory systemd del contenitore degli utenti.
mkdir -p ~/.config/containers/systemd
-
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'operazionesleep 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). -
Abilita la permanenza per l'utente.
sudo loginctl enable-linger oracle
-
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.
-
Avviare il servizio.
systemctl --user start test-ol.service
Il servizio esegue
podman
per scaricare l'immagine di Oracle Linux e quindi emettesleep 60
all'interno dell'immagine del contenitore. -
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 eseguendosudo journalctl _SYSTEMD_USER_UNIT=test-ol.service
. -
Aggiornare il contenitore.
Con la voce
AutoUpdate=registry
nella sezione[Container]
, è possibile abilitare la funzionepodman 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
epodman
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.
Collegamenti correlati
- Documentazione Quadlet Upstream
- Documentazione su Oracle Linux
- Oracle Learning Library
- Stazione di formazione su Oracle Linux
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.
Run Podman Containers Under Systemd with Quadlet
G32067-01
Copyright ©2025, Oracle and/or its affiliates.