Panoramica
Podman (contrazione di POD manager) è uno strumento open source pensato per lo sviluppo, la gestione e l'esecuzione dei container. Sviluppato dagli ingegneri di Red Hat® con il contributo della community open source, Podman gestisce l'intero ambiente dei container tramite la libreria libpod.
L'architettura inclusiva e daemonless di Podman ne fa uno strumento per la gestione dei container sicuro e accessibile. Inoltre, gli strumenti e le funzionalità associati, quali Buildah e Skopeo, consentono agli sviluppatori di personalizzare gli ambienti containerizzati in base alle proprie esigenze e l'interfaccia utente grafica (GUI) Podman Desktop permette di utilizzare Podman in ambienti locali.
Podman si può eseguire su varie distribuzioni Linux, quali Red Hat Enterprise Linux, Fedora, CentOS e Ubuntu.
Cosa sono i pod?
I pod sono gruppi di container che vengono eseguiti insieme e condividono le stesse risorse, in modo simile ai pod Kubernetes. Podman gestisce i pod tramite una semplice interfaccia a riga di comando (CLI) e la libreria libpod, che fornisce le interfacce di programmazione delle applicazioni (API) per la gestione di container, pod, immagini di container e volumi. La CLI di Podman crea e supporta i container Open Container Initiative (OCI), pensati per soddisfare gli standard di settore in termini di runtime e formati dei container. Per capacità di creazione più avanzate è disponibile il progetto complementare Buildah.
Ogni pod è formato da un infra container e da un certo numero di container standard. L'infra container mantiene il pod in esecuzione e conserva gli spazi dei nomi degli utenti, isolando così i container dall'host. Gli altri container monitorano i propri processi per individuare i container non attivi, ovvero container non funzionanti che non possono essere eliminati dall'ambiente perché alcune delle risorse che contengono sono ancora in uso.
Risorse da Red Hat
Quali sono le peculiarità di Podman rispetto agli altri motori per container?
Podman si differenzia dagli altri motori per container perché non usa i daemon e quindi non basa l'esecuzione dei container su un processo con privilegi root.
I daemon, che possiamo definire come gli intermediari tra l'utente e il container, sono processi eseguiti in background nel sistema che si occupano del funzionamento dei container senza interfaccia utente.
Sebbene i daemon rappresentino un metodo pratico per gestire l'ambiente dei container, possono anche introdurre vulnerabilità di sicurezza. Molti daemon si eseguono infatti con privilegi root. Nei sistemi Linux l'account root agisce come utente con privilegi avanzati e dispone dell'accesso amministrativo (bypassa cioè la verifica da parte degli amministratori) per la lettura dei file, l'installazione dei programmi, la modifica delle applicazioni e altro. Per questo i daemon sono il bersaglio ideale dei criminali informatici che puntano a prendere il controllo dei container e a introdursi nel sistema host.
Podman isola i daemon e consente agli utenti standard di eseguire i container senza interagire con un daemon root oppure di utilizzare container rootless. In questa modalità, gli utenti possono creare, eseguire e gestire i container senza processi che richiedono privilegi di amministratore, il che si traduce in ambienti per container più accessibili senza compromessi per la sicurezza. Inoltre, Podman avvia ogni container con l'etichetta Security-Enhanced Linux (SELinux) che garantisce agli amministratori un maggiore controllo sulle risorse e sulle capacità fornite ai processi dei container.
In che modo Podman gestisce i container?
Gli utenti possono invocare Podman dalla riga di comando e utilizzare lo strumento per estrarre i container da un repository ed eseguirli. Podman invia una chiamata al runtime del container configurato per creare il container da eseguire. Dato che non è presente un daemon dedicato, Podman utilizza systemd, un gestore di sistema e servizi per i sistemi operativi Linux, per effettuare gli aggiornamenti e assicurare l'esecuzione dei container in background. Integrando systemd e Podman si possono generare unità di controllo per i container ed eseguirli con systemd abilitato in automatico.
Gli utenti possono controllare l'avvio automatico e la gestione dei container tramite i propri repository nel sistema oppure utilizzare le unità systemd. Consentendo agli utenti di gestire le proprie risorse e di eseguire i container in modalità rootless, si riduce il rischio che vengano aggiunti privilegi non necessari, come l'accesso in scrittura per aree del sistema che non dovrebbero averlo. Con questo approccio inoltre ogni utente dispone di un set di container e immagini distinto e quindi più utenti possono utilizzare simultaneamente Podman sullo stesso host, senza interferire con gli altri. Al termine del loro lavoro, gli utenti possono inviare le modifiche in un registro comune per condividere le immagini con altri.
Per la gestione dei container, Podman si avvale di un'API RESTful o API REST, in cui il termine REST è l'acronimo di REpresentational State Transfer. Un'API REST è un'interfaccia di programmazione delle applicazioni conforme ai vincoli dello stile architetturale REST, che consente l'interazione con servizi web RESTful. L'API REST permette di eseguire una chiamata a Podman da piattaforme quali cURL, Postman, il client Advanced REST di Google e altri.
Cos'è Podman Desktop?
Podman Desktop è una interfaccia utente grafica (GUI) per Podman, che consente agli sviluppatori di lavorare con i container dal proprio laptop o dalla propria workstation. Grazie a questa soluzione gli sviluppatori possono creare, trasferire ed estrarre immagini e gestire le risorse Podman utilizzando una GUI coerente in tutti gli ambienti locali Linux, Windows e macOS. Podman Desktop consente inoltre agli sviluppatori di erogare applicazioni containerizzate pronte per essere distribuite negli ambienti Kubernetes.
Podman Desktop supporta i pacchetti di estensione, che danno accesso a funzionalità aggiuntive. Ad esempio, Podman AI Lab offre istruzioni per la creazione di applicazioni che lavorano con modelli linguistici di grandi dimensioni (LLM) in un ambiente locale e include un catalogo accuratamente selezionato di LLM con licenza open source. Un altro esempio è il pacchetto di estensione Red Hat per Podman Desktop, che aiuta gli sviluppatori a utilizzare specifiche tecnologie Red Hat, come Red Hat OpenShift®.
Podman, Buildah e Skopeo
Podman è un motore per container modulare che, coniugato a strumenti quali Buildah e Skopeo, permette di creare e spostare i container. Con Buildah è possibile realizzare i container da zero o partendo da un'immagine. Skopeo invece è in grado di spostare le immagini dei container tra sistemi di storage differenti, il che permette di copiare le immagini tra registri come docker.io, quay.io e il registro interno o tra i diversi tipi di storage nel sistema locale. Questo approccio modulare alla containerizzazione assicura un ambiente flessibile e leggero, contribuisce a ridurre le spese e isola le funzionalità necessarie. Lavorando con i container è possibile utilizzare strumenti modulari più piccoli, realizzati per scopi specifici e più semplici da aggiornare.
Insieme, Podman, Buildah e Skopeo, sono un set di strumenti funzionali e versatili in grado di soddisfare pressoché tutti gli scenari di utilizzo degli ambienti containerizzati.
Per impostazione predefinita, Podman e Buildah avviano i container servendosi di runC, il runtime OCI. Con runC è possibile creare ed eseguire un'immagine oppure eseguire immagini formattate in Docker. Questo strumento in linguaggio Go legge le specifiche di runtime, configura il kernel Linux e quindi crea e avvia processi dei container. Applicando alcune modifiche alla configurazione, puoi utilizzare Podman anche con altri footprint come crun.
Differenze tra Podman e Docker
Docker è una tecnologia di containerizzazione pensata per la creazione e l'utilizzo dei container Linux. La differenza principale tra Podman e Docker sta nell'architettura, che nel caso di Podman è daemonless. I container Podman sono da sempre rootless, mentre Docker solo di recente ha aggiunto una modalità rootless alla propria configurazione daemon. Docker è uno strumento completo per la creazione e la gestione dei container. Podman e gli strumenti associati, come Buildah e Skopeo, sono dedicati invece ad aspetti specifici della containerizzazione e permettono quindi una personalizzazione maggiore degli ambienti in base alle esigenze di ciascuno.
Podman è una valida alternativa a Docker, ma i due strumenti funzionano anche in sinergia. Gli utenti possono passare con facilità da uno all'altro con l'aliasing da Docker a Podman (alias docker=podman) e viceversa. Inoltre, un rpm chiamato podman-docker può rilasciare un "docker" nel percorso dell'applicazione di sistema che esegue Podman per quegli ambienti in cui il comando "docker" è necessario, facilitando così la transizione da Docker. La CLI di Podman è simile a quella di Docker e gli utenti che hanno familiarità con una sapranno utilizzare senza difficoltà anche l'altra.
Alcuni sviluppatori utilizzano Podman e Docker in combinazione: svolgono la fase di sviluppo su Docker e poi trasferiscono il programma realizzato negli ambienti di runtime di Podman.
Podman è adatto soprattutto agli sviluppatori che eseguono i container senza Kubernetes o Red Hat OpenShift Container Platform. Per l'orchestrazione dei container Kubernetes, è disponibile CRI-O, un motore per container open source gestito dalla community.
Perché scegliere Podman?
Podman ha rivoluzionato il mondo dei container offrendo le stesse capacità ad alte prestazioni dei principali motori per container e aggiungendo la flessibilità, l'accessibilità e nuove funzionalità di sicurezza, aspetti oggi sempre più importanti per i team di sviluppo. Podman consente di:
- Gestire le immagini e l'intero ciclo di vita dei container, incluse le fasi di esecuzione, gestione delle reti, creazione dei punti di controllo e rimozione dei container.
- Eseguire e isolare le risorse per container e pod rootless.
- Supportare immagini OCI e Docker e una CLI compatibile con Docker.
- Creare un ambiente daemonless più sicuro e con minor consumo da parte delle risorse inutilizzate.
- Distribuire un'API REST a supporto delle funzionalità avanzate di Podman.
- Implementare la funzionalità checkpoint/ripristino per i container Linux con checkpoint/restore in userspace (CRIU). CRIU può congelare un container in esecuzione e salvarne i contenuti di memoria e lo stato su disco, permettendo il riavvio dei carichi di lavoro containerizzati in meno tempo.
- Aggiornare automaticamente i container. Podman rileva se un container aggiornato si arresta e ne esegue automaticamente il rollback all'ultima versione funzionante, offrendo nuovi livelli di affidabilità delle applicazioni.
Perché scegliere Red Hat?
Ogni sottoscrizione Red Hat Enterprise Linux include Podman. Questo significa che gli utenti possono eseguire container compatibili con OCI e realizzati tramite un'immagine UBI affidabile e supportata. Red Hat Enterprise Linux è uno standard per l'esecuzione di container Linux in ambienti aziendali. Permette agli sviluppatori di avviare con facilità i container, di gestire i deployment e di accelerare lo sviluppo di nuove applicazioni. Eseguendo l'upgrade dell'infrastruttura Red Hat Enterprise Linux si possono sfruttare al massimo questi vantaggi. Inoltre, la portabilità delle applicazioni e dei container creati su Red Hat Enterprise Linux per gli ambienti di cloud ibrido e aperto assicura alle organizzazioni l'agilità necessaria per adattarsi all'evoluzione degli obiettivi aziendali.
La web console di Red Hat Enterprise Linux, un'interfaccia web di facile utilizzo, snellisce il deployment e l'amministrazione quotidiana dei sistemi e include anche Podman per aiutare i team a gestire i container e le immagini. Monitora l'utilizzo di CPU e di memoria dei container accedendo agli host di container e osservando i carichi sul sistema nella dashboard della web console. Questo strumento web agevola tutte le attività legate alla gestione dei container, da quelle di routine alle operazioni più complesse.
Grazie agli Ansible Playbook, Red Hat Ansible® Automation Platform permette di automatizzare le funzioni di Podman, quali installazione, deployment di container e altre attività, che spesso richiedono molto tempo e risorse.
Podman, Podman Desktop e gli altri strumenti per container basati sugli standard open source fanno di Red Hat Enterprise Linux un host per container efficiente, capace di fornire supporto, stabilità e sicurezza per gli ambienti di produzione e semplificare le iniziative di adozione di Kubernetes e Red Hat OpenShift.
Il blog ufficiale di Red Hat
Leggi gli articoli del blog di Red Hat per scoprire novità e consigli utili sulle nostre tecnologie, e avere aggiornamenti sul nostro ecosistema di clienti, partner e community.