Hai mai usato Docker ma l'hai trovato troppo dispendioso in termini di risorse sul tuo sistema? In tal caso, potresti provare Podman, un nuovo strumento di Red Hat che fornisce un'alternativa a Docker.
Podman è uno strumento progettato per semplificare la creazione e la gestione dei container. E in questo tutorial, installerai Podman e imparerai alcuni scenari di utilizzo di base. Alla fine, sarai tu a decidere se Podman è lo strumento giusto per te.
Pronto? Continua a leggere e ricomincia a gestire i container!
Prerequisiti
Questo tutorial sarà una dimostrazione pratica. Se desideri seguire, assicurati di avere quanto segue.
- Una macchina Linux – Questa demo utilizza Ubuntu 20.04 LTS, ma qualsiasi distribuzione Linux funzionerà.
- Un utente non root con privilegi sudo.
Installazione di Podman su Ubuntu
Prima di gestire i container con Podman, devi prima installare Podman sul tuo computer poiché non è preinstallato nella tua distribuzione Linux.
Per installare Podman su Ubuntu, inizierai aggiornando il tuo gestore di pacchetti APT e aggiungendo il repository di pacchetti Podman.
1. Apri il tuo terminale ed esegui apt update
comando seguente per assicurarti di installare gli ultimi aggiornamenti. Questo comando assicura che non ci siano mancate corrispondenze di pacchetti tra la tua macchina e il repository di pacchetti.
sudo apt update -y
2. Dopo aver aggiornato l'indice del pacchetto, esegui source
comando seguente per eseguire /etc/os-release
file come script. Questo comando assicura che la tua macchina riconosca quale versione di Ubuntu stai utilizzando.
Il file os-release contiene informazioni sul sistema operativo, come nome e nome in codice. Il file potrebbe includere anche altri dettagli come i numeri di versione di vari componenti (kernel, server X e così via.)
source /etc/os-release
3. Esegui sh -c echo
comando qui sotto per aggiungere il kubic
repository di pacchetti deb su APT. Podman non è disponibile nei repository predefiniti di Ubuntu, quindi dovrai aggiungere il repository Podman prima di installarlo.
Il comando seguente esegue le seguenti operazioni:
- Crea un nuovo file (
sh -c
) nel/etc/apt/sources.list.d/
directory. Questa directory è dove APT scarica i pacchetti deb per l'installazione sulla tua macchina.
- Assicura che stai utilizzando una versione specifica di Ubuntu (
{VERSION_ID}
), che è la versione che hai ottenuto in precedenza dasource
comando sopra nel passaggio due.
- Reindirizza l'output (
>
) per scrivere in fondo al file, assicurandoti che il tuo input sia scritto correttamente nel file (sources.list.d/devel:kubic:libcontainers:stable.list
).
sudo sh -c "echo 'deb http://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/xUbuntu_${VERSION_ID}/ /' > /etc/apt/sources.list.d/devel:kubic:libcontainers:stable.list"
4. Ora esegui wget
comando seguente per aggiungere la chiave del repository all'elenco delle chiavi attendibili di APT.
Red Hat ospita la chiave e la firma con una chiave privata che verifica solo le altre persone che dispongono della loro chiave pubblica. Questa chiave garantisce che Red Hat e non qualcun altro rilasci i pacchetti che scarichi e installi.
wget -nv https://download.opensuse.org/repositories/devel:kubic:libcontainers:stable/xUbuntu_${VERSION_ID}/Release.key -O- | sudo apt-key add -
5. Riesegui il apt update
comando per garantire che l'elenco dei pacchetti di APT sia aggiornato.
sudo apt update -y
6. Quindi, esegui apt install
comando qui sotto per installare podman
.
sudo apt install podman -y
7. Infine, esegui il comando seguente per controllare il --version
installato da Podman .
podman --version
Come puoi vedere di seguito, la versione di Podman installata è la 3.4.2, l'ultima versione al momento della scrittura, e la tua potrebbe essere diversa.
Puoi anche eseguire il comando podman inf di seguito per visualizzare ulteriori informazioni sull'installazione di Podman.
podman info
Abilitazione dei registri OCI
Prima di utilizzare Podman per creare contenitori, assicurati che Podman possa comunicare con i registri OCI. Podman supporta più registri OCI contemporaneamente in modo da poter creare contenitori utilizzando diversi repository.
Apri il /etc/containers/registries.conf
file con il tuo editor di testo preferito. Questo file definisce tutti i registri con cui Podman può comunicare. Podman consulta questo file per scoprire a quali registri dovrebbe connettersi.
sudo nano /etc/containers/registries.conf
Ora, compila il registries.conf file con le seguenti righe, salva le modifiche e chiudi l'editor.
Queste righe configurano Podman per l'utilizzo del registro pubblico su Docker Hub (docker.io, register.access.redhat.com ) e il registro privato(quay.io ), che è consigliato.
[[registry]]
prefix="[quay.io]( )"
location="internal.registry.mirror/quay"
[[registry]]
prefix="[docker.io]( )"
location="internal.registry.mirror/docker"
[[registry]]
prefix="[registry.access.redhat.com]( )"
location="internal.registry.mirror/redhat"
Eseguire Contenitori Podman con i privilegi Podman
Ora che hai installato Podman e configurato i registri, puoi iniziare a eseguire i container Podman con i privilegi Podman. Il kernel Linux supporta un'ampia gamma di controlli dei permessi sulle sue chiamate di sistema, come le funzionalità.
Nel caso dei contenitori Podman, le funzionalità controllano il comportamento predefinito di root all'interno dello spazio dei nomi utente. Puoi usare il --privileged
flag durante l'esecuzione di un container per aggiungere tutte le funzionalità non già presenti nel container.
1. Esegui podman run
comando qui sotto per creare un fedora
contenitore senza capacità.
podman run -d fedora sleep 100
2. Quindi, esegui il seguente podman top
comando per elencare tutte le capacità.
podman top -l capeff
Come mostrato di seguito, il normale contenitore rootless ha capacità limitate.
3. Esegui podman run
comando seguente per creare un contenitore con tutte le funzionalità (--privileged
).
podman run --privileged -d fedora sleep 100
4. Infine, riesegui il podman top
comando per verificare la differenza di capacità.
podman top -l capeff
Noterai che le funzionalità complete sono disponibili per questo contenitore a causa del flag –privileged, come mostrato di seguito.
Noterai che le funzionalità complete sono disponibili per questo contenitore a causa del flag –privileged, come mostrato Il flag –privileged consente al contenitore di essere eseguito con tutte le funzionalità, non solo quelle già presenti nel contenitore. Questo flag è importante in quanto associa lo spazio dei nomi utente del contenitore allo spazio dei nomi dell'host, fornendogli tutte le capacità dei processi in esecuzione sul tuo sistema.
Se non imposti il flag –privileged all'avvio di un container, il container avrà un insieme limitato di funzionalità. Nel caso di contenitori che utilizzano il proprio spazio dei nomi utente, dovrai fornire loro tutte le funzionalità in modo esplicito.
Utilizzo di immagini e contenitori Podman
Ora che hai imparato come aggiungere i registri e le funzionalità OCI per un container, puoi lavorare con le immagini e i container Podman. Per questa demo, utilizzerai NGINX come immagine per creare un contenitore.
1. Esegui podman search
comando di seguito per elencare tutte le immagini Podman disponibili per nginx
podman search nginx
Di seguito, puoi vedere che ottieni tutte le immagini con tag disponibili per NGINX da docker.io , quay.io e redhat.com repo che hai aggiunto in precedenza nella sezione "Abilitazione dei registri OCI":
- L'INDICE la colonna mostra dove si trovano le immagini.
- L'UFFICIALE colonna con OK lo stato indica che l'immagine nella riga è stata creata e supportata dalla sua azienda ufficiale. Ad esempio, il NGINX immagine con OK lo stato è creato e supportato dalla sua azienda, NGINX. Queste immagini verranno aggiornate non appena verranno rilevate vulnerabilità di sicurezza e aggiornamenti delle patch.
- Il AUTOMAZIONE colonna con OK status significa che le immagini sono build automatizzate. Queste immagini verranno aggiornate non appena verranno rilevate vulnerabilità di sicurezza e aggiornamenti delle patch.
2. Dopo aver selezionato un'immagine NGINX da utilizzare, esegui podman
comando qui sotto per scaricare (pull
) l'immagine sul computer locale.
Questa demo utilizza nginx:alpine poiché è l'immagine più piccola e può essere eseguita solo in memoria, risparmiando tempo nelle fasi di costruzione successive.
podman pull nginx:alpine
A questo punto, hai una nuova immagine che puoi utilizzare per creare un contenitore o utilizzare come immagine di base per altri contenitori.
3. Esegui podman images
comando per vedere le informazioni sulla tua nuova immagine
podman images
4. Ora esegui il podman run
comando seguente per creare un contenitore dall'immagine (nginx:alpine
) ed esegui un nginx
server su quell'immagine.
Questo comando esegue quanto segue:
- Avvia il contenitore in modo interattivo (
-it
) e consente di collegare un terminale.
- Elimina (
--rm
) il container dopo che è uscito/si è fermato.
- Esegue il contenitore in background (
--d
) e pubblica (-p
) porta80
su tutte le interfacce per portare8080
sul contenitore.
- Specificare il nome del contenitore (
--name web
).
podman run -it --rm -d -p 8080:80 --name web nginx:alpine
Otterrai un ID contenitore casuale, come mostrato di seguito, che puoi utilizzare per monitorare/avviare/arrestare/rimuovere il contenitore. Annota l'ID del contenitore poiché è utile quando controlli i log o arresti un contenitore specifico.
5. Esegui il seguente podman ps
comando (senza argomenti) per verificare se il tuo contenitore è in esecuzione.
podman ps
Puoi vedere che il contenitore web è attivo e utilizza la porta 8080/TCP sul tuo computer host per esporre la sua risorsa.
6. Per un doppio controllo, apri il browser web e vai a localhost:8080 o il-tuo-ip-server:8080 , dove il-tuo-ip-server è l'indirizzo IP del tuo server.
Se il tuo container funziona, vedrai la schermata di benvenuto predefinita di NGINX, come mostrato di seguito.
Se non sei sicuro di come sia impostato il contenitore o se presenta errori, esegui il comando podman logs di seguito per ottenere i file di registro per il contenitore. Sostituisci mycontainer con il tuo ID contenitore di destinazione.
podman logs mycontainer
7. Eseguire uno dei podman stop
comandi seguenti per arrestare il tuo contenitore. Sostituisci mycontainer
con il tuo ID contenitore di destinazione o sostituisci web
con il nome effettivo del contenitore.
Poiché hai utilizzato il flag –rm nel passaggio quattro, Podman elimina il tuo contenitore non appena lo arresti. Questa configurazione aiuta a mantenere il tuo spazio di lavoro ordinato.
# Stops the container by Container ID
podman stop mycontainer
# Stops the container by Container Name
podman stop web
8. Infine, esegui podman ps
comando per elencare tutti i contenitori, incluso un contenitore interrotto.
podman ps -a
Il tuo contenitore è stato eliminato quando lo avevi interrotto in precedenza, quindi non otterrai nulla nell'elenco, come mostrato di seguito.
Conclusione
In questo articolo, hai imparato a installare Podman e come lavorare con immagini e contenitori per le distribuzioni. A questo punto, puoi ora utilizzare le immagini abilitate per OCI da docker.io , quay.io e redhat.com repository per creare i tuoi contenitori.
Con questa nuova conoscenza, perché non costruire i tuoi pod Kubernetes con Podman play kube o iniziare a utilizzare Ansible per automatizzare i container Podman?