Cos'è Podman?

Copia URL

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. Gli strumenti e le funzionalità inclusi, come Buildah e Skopeo, consentono agli sviluppatori di personalizzare i propri ambienti containerizzati in base alle proprie esigenze. Gli sviluppatori possono anche sfruttare Podman Desktop, un'interfaccia utente grafica (GUI) per l'utilizzo di Podman in ambienti locali.

Podman si può eseguire su varie distribuzioni Linux® come Red Hat Enterprise Linux, Fedora, CentOS e Ubuntu

Prova Red Hat Enterprise Linux
 

I pod sono gruppi di container che vengono eseguiti insieme e condividono le stesse risorse, in modo simile ai pod di 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 in esecuzione il pod e gestisce gli spazi dei nomi utente, che isolano 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

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 sono processi eseguiti in background nel sistema che si occupano del funzionamento dei container senza interfaccia utente. Pensa ai daemon come a un intermediario che si occupa delle comunicazioni tra l'utente e il container stesso.

I daemon possono essere un modo pratico per gestire l'ambiente containerizzato, ma 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. Con l'adozione dell'approccio rootless, gli utenti possono creare, eseguire e gestire i container senza richiedere processi con privilegi di amministratore. Questo rende l'ambiente container più accessibile e riduce i rischi per la sicurezza. Inoltre, Podman avvia ogni container con l'etichetta Security-Enhanced Linux (SELinux), garantendo agli amministratori più controllo sulle risorse e sulle capacità fornite ai processi dei container.

Gli utenti possono richiamare Podman dalla riga di comando per estrarre i container da un repository ed eseguirli. Podman chiama il runtime del container configurato per creare il container in esecuzione. 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, puoi generare unità di controllo per i container ed eseguirli con systemd automaticamente abilitato.

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. Inoltre, ciò garantisce che ogni utente disponga di set separati di container e immagini e che possa utilizzare Podman contemporaneamente sullo stesso host senza interferenze tra i vari utenti. Al termine del loro lavoro, gli utenti possono inviare le modifiche in un registro comune per condividere le immagini con altri.

Podman distribuisce anche un'API RESTful (API REST) per gestire i container. 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. Con l'API REST, puoi chiamare Podman da piattaforme come cURL, Postman, il client Advanced REST di Google e molte altre.

Prova cinque funzionalità di Podman

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®.

Inoltre, Red Hat offre una versione affidabile di Podman Desktop. Red Hat build of Podman Desktop è un'applicazione desktop leggera con controlli di sicurezza integrati per la creazione, la gestione e il deployment di container su Linux, macOS e Windows. Questa soluzione incrementa la produttività fornendo un'esperienza di sviluppo coerente dalla macchina locale ai deployment in produzione nel cloud ibrido e integrandosi con piattaforme come Red Hat OpenShift e Kubernetes.

Inoltre, Red Hat offre una versione affidabile di Podman Desktop. Red Hat build of Podman Desktop è un'applicazione desktop leggera con controlli di sicurezza integrati per la creazione, la gestione e il deployment di container su Linux, macOS e Windows. Questa soluzione incrementa la produttività fornendo un'esperienza di sviluppo coerente dalla macchina locale ai deployment in produzione nel cloud ibrido e integrandosi con piattaforme come Red Hat OpenShift e Kubernetes.

Scopri Red Hat build of Podman Desktop

Poiché Podman è un motore per container modulare, deve funzionare insieme a strumenti come Buildah e Skopeo per creare e spostare i suoi container. Con Buildah puoi creare container da zero o utilizzando un'immagine come punto di partenza. 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.

Pensa a Podman, Buildah e Skopeo come a un set di coltelli svizzeri multifunzione. Insieme, possono soddisfare quasi tutti gli scenari di utilizzo dei container. Podman è il più grande di questi coltelli.

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 una specifica di runtime, configura il kernel Linux e quindi crea e avvia processi di container. Con alcune modifiche alla configurazione, Podman può essere utilizzato anche con altri footprint, come crun.

Creazione di container UBI in GitHub Actions con Buildah e Podman

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 tutto in uno per la creazione e la gestione dei container, mentre Podman e gli strumenti associati come Buildah e Skopeo sono più specializzati per aspetti specifici della containerizzazione. In questo modo è possibile personalizzare gli ambienti solo con gli strumenti necessari.

Podman è una valida alternativa a Docker, ma i due strumenti funzionano anche in sinergia. Gli utenti possono passare facilmente da uno all'altro assegnando l'alias 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.

Guarda questo video sui container rootless con 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 pod e container 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.
  • Eseguire il deployment di un'API REST per supportare le funzionalità avanzate di Podman.
  • Implementare la funzionalità checkpoint/ripristino per i container Linux con Checkpoint/Restore in Userspace (CRIU). CRIU può bloccare un container in esecuzione e salvarne il contenuto della memoria e lo stato su disco. Questo permette di riavviare più rapidamente i carichi di lavoro containerizzati.
  • Aggiornare automaticamente i container. Podman rileva se un container aggiornato non si avvia ed esegue automaticamente il rollback all'ultima versione funzionante. In questo modo si ottengono nuovi livelli di affidabilità per le applicazioni. 
 

Podman è incluso in una sottoscrizione a Red Hat Enterprise Linux e consente di eseguire container conformi a OCI creati utilizzando un'immagine base universale (UBI) affidabile, supportabile e affidabile. 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.

Scarica l'ebook sulle Universal Base Image di Red Hat

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.

Tutte le versioni di prova dei prodotti Red Hat

Grazie alle versioni di prova gratuite dei prodotti Red Hat potrai acquisire esperienza pratica, prepararti per le certificazioni o capire se il prodotto che hai scelto è giusto per le esigenze della tua organizzazione.

Continua a leggere

Cos'è la tecnologia KVM?

Kernel based Virtual Machine (KVM) è una tecnologia di virtualizzazione open source che trasforma Linux in un hypervisor.

Concetti essenziali di Ansible e Puppet

Ansible e Puppet sono strumenti open source per l'automazione dell'IT sviluppati dalla community. Questo articolo illustra in maniera approfondita le analogie e le differenze fra Ansible e Puppet.

Concetti essenziali di Ansible e Salt

Ansible e Salt sono strumenti open source per l'automazione dell'IT sviluppati dalla community. Questo articolo illustra in maniera approfondita le analogie e le differenze fra Ansible e Salt.

Open source: risorse consigliate

Articoli correlati