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. Quando completi il tuo laboratorio, sostituisci questi valori con quelli specifici del tuo ambiente cloud.
Utilizza Compose Files con Podman su Oracle Linux
Introduzione
Podman e Docker Compose sono entrambi strumenti della riga di comando che utilizzano un file YAML appositamente formattato come input per assemblare e quindi eseguire uno o più contenitori come applicazioni. Questi strumenti consentono agli sviluppatori di sviluppare, testare e quindi fornire ai propri utenti un singolo file YAML per la propria applicazione e utilizzare un solo comando per avviarlo e arrestarlo in modo affidabile. Questa portabilità e affidabilità hanno reso l'utilizzo delle specifiche Compose estremamente popolare tra gli utenti e gli sviluppatori, e sta diventando sempre più un requisito.
Obiettivi
In questo tutorial imparerai a:
- Installare e utilizzare sia
podman-compose
chedocker-compose
con Podman - Verificare che funzionino con un semplice file
docker-compose.yaml
Prerequisiti
-
Minimo di un singolo sistema Oracle Linux
-
Ogni sistema deve avere Oracle Linux installato e configurato con:
- Account utente non root con accesso sudo
- Accesso a Internet
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.
-
Aprire un terminale sul Luna Desktop.
-
Duplicare 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
-
Implementare l'ambiente di laboratorio.
ansible-playbook create_instance.yml -e localhost_python_interpreter="/usr/bin/python3.6" -e update_all=true
L'ambiente di esercitazione pratica gratuito richiede l'aggiunta della variabile
local_python_interpreter
, che impostaansible_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.
Impostare Podman per l'utilizzo dei file di composizione
Podman ha introdotto il supporto per la funzionalità Docker Compose in Podman v3.2.0, dopo che è stato introdotto un supporto limitato in Podman v3.0.0, introducendo così la possibilità di utilizzare Docker Compose dall'interno di Podman. Più di recente, Podman v4.1.0 ha esteso il supporto della funzionalità Docker Compose per includere l'utilizzo di Docker Compose v2.2 e versioni successive.
Installare il package Docker Podman
Installare il pacchetto podman-docker
, che consente a Podman di funzionare in modo nativo con i comandi Docker.
sudo dnf install -y podman-docker
Installa composizione Docker
-
Scaricare e installare Compose standalone.
sudo curl -SL https://github.com/docker/compose/releases/download/v2.28.1/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
Output di esempio:
% Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 100 60.1M 100 60.1M 0 0 103M 0 --:--:-- --:--:-- --:--:-- 378M
-
Applicare le autorizzazioni eseguibili al file binario.
sudo chmod +x /usr/local/bin/docker-compose
-
Confermare i lavori standalone di Compose.
docker-compose version
L'output restituisce la versione corrente di
docker-compose
.Nota: l'installazione di Compose in modalità standalone, come descritto qui, richiede l'uso di
docker-compose up
, ad esempio, anziché la sintassi standarddocker-compose up
utilizzata durante l'esecuzione della utility Docker.
Avviare il socket Podman
Podman e Docker Compose richiedono l'avvio del socket Podman, che consente alle chiamate di sistema di ogni programma di comunicare con Podman su questo processo controllato da systemd.
-
Configurare il socket Podman.
systemctl --user enable --now podman.socket systemctl --user status podman.socket
L'output mostra il socket systemd
active (listening)
. -
Recupera la posizione per la posizione del socket Podman dell'utente.
podman info | grep -i remotesocket -A2
-
Verificare che il socket funzioni utilizzando cURL.
curl -w "\n" -H "Content-Type: application/json" --unix-socket /run/user/$UID/podman/podman.sock http://localhost/_ping
Il percorso per
--unix-socket
corrisponde al percorso fornito dapodman info
. L'output di questo comando deve restituireOK
, a indicare una configurazione riuscita della funzionalità di composizione pronta per l'uso con i file docker-compose.yaml.
Installa composizione Podman
Podman Compose è una libreria Python 3 che implementa la specifica composita per essere eseguita con Podman.
-
Installare e abilitare il repository developer_EPEL.
Oracle Linux 8:
sudo dnf install -y oracle-epel-release-el8 sudo dnf config-manager --enable ol8_developer_EPEL
Oracle Linux 9:
sudo dnf install -y oracle-epel-release-el9 sudo dnf config-manager --enable ol9_developer_EPEL
Oracle Linux 10:
sudo dnf install -y oracle-epel-release-el10 sudo dnf config-manager --enable ol10_u0_developer_EPEL
-
Installare il pacchetto di Podman Compose.
sudo dnf install -y podman-compose
-
Verificare che Podman Compose funzioni visualizzandone la versione.
podman-compose version
Creare un file di composizione
Questo file Compose consente il pull e l'avvio dell'applicazione designata.
-
Creare una directory per il test e modificarla in tale directory.
mkdir -p projects/echo cd projects/echo
-
Creare il file di composizione.
cat >> compose.yaml << EOF services: web: image: k8s.gcr.io/echoserver:1.4 ports: - "${HOST_PORT:-8080}:8080" EOF
-
Rivedere il file di composizione.
cat compose.yaml
Esegui composizione Podman
-
Cambiare nella stessa directory del file di composizione.
Importante: i comandi
podman-compose
non funzioneranno a meno che non si trovi nella stessa directory del filecompose.yaml
.cd ~/projects/echo/
-
Avviare l'applicazione
echoserver
.podman-compose up -d
L'output mostra Podman che estrae il contenitore e lo avvia con i parametri elencati nel file di composizione. L'opzione
-d
indica a Podman di eseguire il contenitore in background in modalità scollegata. Podman estrae le immagini a cui viene fatto riferimento nel file Compose solo se non sono presenti localmente. -
Il test dell'applicazione echoserver è attivo e in esecuzione.
curl -X POST -d "foobar" http://localhost:8080/; echo
Output di esempio:
CLIENT VALUES: client_address=10.89.0.2 command=POST real path=/ query=nil request_version=1.1 request_uri=http://localhost:8080/ SERVER VALUES: server_version=nginx: 1.10.0 - lua: 10001 HEADERS RECEIVED: accept=*/* content-length=6 content-type=application/x-www-form-urlencoded host=localhost:8080 user-agent=curl/7.61.1 BODY: foobar
-
Confermare inoltre l'esito positivo esaminando i log.
podman-compose logs
Output di esempio:
```text ['podman', '–version', ''] using podman version: 4.2.0 podman logs echo_web_1 10.89.0.2 - [17/gen/2023:12:46:47 +0000] "POST / HTTP/1.1" 200 446 "-" "curl/7.61.1" exit code: 0
-
Utilizzare la utility Podman Compose per visualizzare i container in esecuzione.
podman-compose ps
Output di esempio:
['podman', '--version', ''] using podman version: 4.2.0 podman ps -a --filter label=io.podman.compose.project=echo CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f4053947c8c1 k8s.gcr.io/echoserver:1.4 nginx -g daemon o... 2 minutes ago Up 2 minutes ago 0.0.0.0:8080->8080/tcp echo_web_1 exit code: 0
È possibile visualizzare altri comandi della utility Podman Compose eseguendo
podman-compose --help
. -
Ora è il momento di arrestare il contenitore echoserver.
podman-compose down
-
Rimuovere la rete bridge Podman aggiuntiva creata durante la distribuzione del contenitore.
podman network rm echo_default
Conferma funzionamento composizione Docker
-
Impostare la variabile di ambiente per la posizione del socket Podman.
export DOCKER_HOST=unix:///run/user/$UID/podman/podman.sock
-
Avviare l'applicazione echoserver.
Questo comando deve essere eseguito all'interno della stessa directory del file di composizione.
docker-compose up -d
L'output mostra la creazione della rete echo_default e del contenitore echo-web-1.
-
Accedere all'applicazione del contenitore.
curl -X POST -d "foobar" http://localhost:8080/; echo
Output di esempio:
[oracle@ol-server ~]$ curl -X POST -d "foobar" http://localhost:8080/; echo CLIENT VALUES: client_address=10.89.0.2 command=POST real path=/ query=nil request_version=1.1 request_uri=http://localhost:8080/ SERVER VALUES: server_version=nginx: 1.10.0 - lua: 10001 HEADERS RECEIVED: accept=*/* content-length=6 content-type=application/x-www-form-urlencoded host=localhost:8080 user-agent=curl/7.61.1 BODY: foobar
-
Esaminare i log e confermare che l'applicazione ha sottomesso correttamente una richiesta di reso.
docker-compose logs
Output di esempio:
```testo echo-web-1 | 10.89.0.1 - - [17/gen/2023:14:48:56 +0000] "POST / HTTP/1.1" 200 446 "-" "curl/7.61.1"
-
Consente di ottenere una lista di contenitori avviata utilizzando la utility Docker Compose.
docker-compose ps
Output di esempio:
echo-web-1 k8s.gcr.io/echoserver:1.4 "nginx -g daemon off;" web 12 minutes ago Up 12 minutes 8080/tcp
-
Arrestare l'applicazione echoserver.
docker-compose down
Informazioni importanti
Se si installano entrambi gli eseguibili podman-compose
e docker-compose
sullo stesso sistema, è importante notare che non è possibile richiamarli in modo intercambiabile. Ciò che intendiamo con questa istruzione è che se si avvia un processo utilizzando podman-compose
, non è possibile eseguirne una query o arrestarlo utilizzando docker-compose
o viceversa.
-
Iniziare utilizzando Podman Compose.
podman-compose up -d
-
Provare a elencare i contenitori in esecuzione utilizzando Docker Compose.
docker-compose ps
L'output restituisce un elenco vuoto che mostra che, dal suo punto di vista, nessun container è in esecuzione.
-
Tuttavia, l'utilizzo di Podman Compose conferma che il contenitore è in esecuzione.
podman-compose ps
Output di esempio:
['podman', '--version', ''] using podman version: 4.2.0 podman ps -a --filter label=io.podman.compose.project=echo CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 55335e797296 k8s.gcr.io/echoserver:1.4 nginx -g daemon o... 4 minutes ago Up 4 minutes ago 0.0.0.0:8080->8080/tcp echo_web_1 exit code: 0
Passi successivi
Ciò conferma come utilizzare un file Compose con Podman utilizzando podman-compose
o docker-compose
.
Collegamenti correlati
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.
Use Compose Files with Podman on Oracle Linux
F76753-02