Cos'è Podman

  • Di
  • 2021-03-25 - 4 minuti
banner

Sempre più spesso Podman viene contrapposto a sostituzione di Docker: concepito come strumento di debugging per semplificare il lavoro con i cluster Kubernetes, è diventato un software dal motore autonomo e completo per la gestione di container; Podman è infatti un motore per container daemon-less, per lo sviluppo, la gestione e l’esecuzione di container OCI.

Versione breve

Podman (abbr. Pod Manager) è un container engine rilasciato nel 2018. È stato sviluppato da Red Hat e somiglia a Docker per molti aspetti, come l’utilizzo della riga di comando; questo rende infatti possibile utilizzare i comandi tipici di Docker su Podman, utilizzando l’alias docker=podman.

Nella maggior parte dei casi il passaggio da Docker a Podman è relativamente semplice; la novità però che caratterizza Podman è l’assenza di un demone centrale come istanza di controllo del singolo container e questo offre la possibilità di accedere alle diverse applicazioni virtualizzate anche senza permessi di root.

Podman gira su tutte le distribuzioni di Linux disponibili come Ubuntu, Fedora, CentOS, Debian e RHEL ma anche su Raspbian. Per la maggior parte dei casi, questo motore si può installare direttamente attraverso la gestione dei pacchetti del relativo sistema.

Per installarlo, è possibile seguire le indicazioni della documentazione ufficiale.

Versione lunga

I pod rappresentano una caratteristica fondamentale che contraddistingue Podman da Docker; i pod, che si rifanno al concetto dei pod di Kubernetes, rappresentano un insieme di più container all’interno di uno stesso namespace di Linux che condividono risorse ben definite per combinare in modo flessibile diverse applicazioni virtualizzate.

Podman ricorre ai namespace dell’utente del kernel di Linux, che assegnano permessi e ID ai processi. In realtà il container è eseguito in qualità di amministratore e questo conferisce all’ambiente virtualizzato di Podman uno standard di sicurezza elevato.

I cosiddetti infra container rappresentano il cuore pulsante di un pod e sono responsabili delle funzionalità relative all’unione dei vari pod, gestendo e garantendo a questo scopo le risorse singole come namespace, porte di rete, CPU, memoria, ecc.

Inoltre, per la gestione dei pod, Podman ricorre allo strumento di monitoraggio Conmon, che monitora le singole componenti virtualizzate e il che rende i log sicuri. Per di più, questo strumento funge da interfaccia per il terminale del container corrispondente.

Architettura di Podman

Le principali differenze tra Docker e podman (Pod Manager Tool) sono:

  • Daemon-less: siamo ai due poli totalmente opposti con Docker, perché quest’ultimo esegue un daemon per eseguire tutte le sue attività. Podman è leggero e non richiede che ci sia un’istanza sempre in esecuzione per avviare dei container!
  • Rootless: Podman può essere eseguito come root o non root. Possiamo eseguire contenitori podman come utente non root ed essere comunque conformi ai contenitori in esecuzione.
  • Pod: il termine pod ha origine da Kubernetes: sono infatti una raccolta di container che vengono eseguiti il più vicino possibile. Podman fornisce questa funzionalità pronta all’uso per eseguire più container insieme tramite l’uso di pod, al contrario di Docker che richiede strumenti supplementari.

Per poter utilizzare Podman, basta fare riferimento ai comandi Docker: vediamo come avviare, stoppare o eliminare un’immagine sia del tutto simile a quanto già disponibile con la CLI Docker.

$ podman run --rm nginx # avvia l'immagine Nginx

$ podman build -t my-image . # esegue la build a partire dal Dockerfile locale

$ podman rmi nginx # rimuove l'immagine 

$ podman images # elenca le immagini in locale

$ podman ps -a # elenca i container in locale

$ podman login docker.xxx.com -u my-name # login sul registry Docker

In più, esistono una serie di comandi che permettono la gestione totale dei pod: chiarito il concetto che un pod è l’insieme di uno o più container, vediamo quali comandi abbiamo a disposizione:

$ podman pod create --name my_pod # crea un pod chiamato my_pod

$ podman pod list # elenca i pod presenti in locale

$ podman ps -a --pod # mostra i pod in esecuzione 

$ podman inspect –l # ispeziona un container in esecuzione

 $ podman run -dt --pod my_pod ubuntu top # top per vedere l'output del pod in cui aggiungiamo il container ubuntu 

$ podman run -dt --pod new:new_pod -p 31000:80 nginx # creazione pod e deploy del container all'interno di un nuovo pod chiamato new_pod

Tip

Se ti stai chiedendo da dove viene il termine “pod”, allora sappi che tradotto letteralmente significa “branco di balene”: rende bene l’idea di un insieme di container, che sono comunemente rappresentati grazie alla tecnologia che li ha resi celebri, Docker, che ha come simbolo una balena azzurra. Podman non è altro che l’uomo delle balene!

Risorse utili

Post correlati

Partners

Community, aziende e persone che supportano attivamente il blog

Logo di Codemotion
Logo di GrUSP
Logo di Python Milano
Logo di Schrodinger Hat
Logo di Python Biella Group
Logo di Fuzzy Brains
Logo di Django Girls
Logo di Improove
Logo del libro open source

Iscriviti alla newsletter

Per non perderti gli ultimi articoli e per vincere biglietti e gadget TheRedCode

Riceverai una volta al mese (o anche meno) gli articoli più interessanti pubblicati sul blog, e potrai provare a vincere un biglietto per uno dei prossimi eventi!

Andiamo!