Negli ultimi anni la vir­tua­liz­za­zio­ne dei container ha acquisito sempre maggiore im­por­tan­za. Questa tec­no­lo­gia è diventata com­po­nen­te base per diversi strumenti di controllo di namespace virtuali (in italiano: “spazio dei nomi”), so­prat­tut­to dopo la prima ap­pa­ri­zio­ne nel 2013 di Docker che l’ha resa nota. Una delle soluzioni più in­te­res­san­ti è rap­pre­sen­ta­ta da Podman. Concepito ini­zial­men­te come strumento di debugging per CRI-O, che avrebbe dovuto sem­pli­fi­ca­re il lavoro con i cluster di Ku­ber­ne­tes, è diventato ra­pi­da­men­te un software dal motore autonomo e completo per la gestione di container.

N.B.

I namespace o spazi di nomi per­met­to­no di rag­grup­pa­re in un container elementi se­le­zio­na­ti di un codice (per esempio classi).

Di seguito sco­pri­re­te cosa rende Podman davvero speciale e per quali scopi possiamo uti­liz­za­re questo strumento per i container.

Cos’è Podman?

Podman (ab­bre­via­zio­ne di: Pod Manager) è un container engine ri­la­scia­to per la prima volta nel mese di febbraio del 2018. È stato svi­lup­pa­to dalla Red Hat, società sta­tu­ni­ten­se di sviluppo di software, famosa so­prat­tut­to per le sue efficaci soluzioni aziendali per diversi progetti open source come Red Hat En­ter­pri­se Linux (RHEL) oppure OpenStack. Partendo dall’espe­rien­za di Docker, Podman all’origine non era stato concepito come engine autonomo, ma come un semplice strumento di deb­bug­ging per CRI-O. Questo piano fu subito messo da parte.

Il software di container somiglia a Docker per molti aspetti e utilizza ad esempio lo stesso in­ter­pre­te della riga di comando del programma standard. Questo rende ad­di­rit­tu­ra possibile uti­liz­za­re i comandi tipici di Docker su Podman, inserendo però l’alias alias docker=podman. Perciò, nella maggior parte dei casi, il passaggio da Docker a Podman è re­la­ti­va­men­te semplice. La novità decisiva che ca­rat­te­riz­za Podman è la rinuncia a un demone centrale come istanza di controllo del singolo container. Questo vi offre la pos­si­bi­li­tà di accedere alle diverse ap­pli­ca­zio­ni vir­tua­liz­za­te anche senza permessi di root.

N.B.

Per i sistemi operativi Unix/Linux, il demone rap­pre­sen­ta un programma eseguito in back­ground che mette a di­spo­si­zio­ne servizi e processi precisi.

Podman gira su tutte le di­stri­bu­zio­ni di Linux di­spo­ni­bi­li come Ubuntu, Fedora, CentOS, Debian e RHEL ma anche su Raspbian (sistema operativo del Raspberry Pi). Per la maggior parte dei casi, questo motore si può in­stal­la­re di­ret­ta­men­te at­tra­ver­so la gestione dei pacchetti del relativo sistema.

Consiglio

Nel Digital Guide troverete anche in­for­ma­zio­ni su: "Podman vs. Docker: qual è il futuro del mondo dei container?".

Con­fi­gu­ra­zio­ne e fun­zio­na­men­to di Podman

Oltre alla rinuncia a un demone centrale, anche i co­sid­det­ti pod rap­pre­sen­ta­no una ca­rat­te­ri­sti­ca fon­da­men­ta­le che con­trad­di­stin­gue Podman. Questi pod, che si rifanno al concetto dei pod di Ku­ber­ne­tes, rap­pre­sen­ta­no l’unione di più container all’interno di uno stesso namespace di Linux, che con­di­vi­do­no risorse precise. Questo permette di combinare in modo fles­si­bi­le diverse ap­pli­ca­zio­ni vir­tua­liz­za­te.

Come già detto in pre­ce­den­za, è possibile eseguire i singoli container sull’host come utente tra­di­zio­na­le senza permessi di root, mentre solo all’interno di un container i processi sono con­trol­la­ti come root. Per farlo, Podman ricorre ai namespace dell’utente del kernel di Linux, che assegnano permessi speciali e ID utente ai processi. In realtà il container è eseguito soltanto in qualità di am­mi­ni­stra­to­re e questo con­fe­ri­sce all’ambiente vir­tua­liz­za­to di Podman uno standard di sicurezza elevato.

I co­sid­det­ti infra container rap­pre­sen­ta­no il core di un pod e sono re­spon­sa­bi­li esclu­si­va­men­te della fun­zio­na­li­tà dell’unione, gestendo e ga­ran­ten­do 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 mo­ni­to­rag­gio scritto in C Conmon, che monitora le singole com­po­nen­ti vir­tua­liz­za­te e rende ad esempio i log sicuri. Per di più, questo strumento funge da in­ter­fac­cia per il terminale del container cor­ri­spon­den­te. Come runtime per i container, Podman utilizza il software runC, uti­liz­za­to anche per molte altre soluzioni come Docker o rkt.

Tutorial su Podman: i primi passi con Podman

Dopo avervi pre­sen­ta­to le ca­rat­te­ri­sti­che prin­ci­pa­li di Podman, vi rias­su­mia­mo nel seguente tutorial i punti più im­por­tan­ti per co­min­cia­re a lavorare con il container engine.

In­stal­la­re Podman con Linux

Podman è un software per l’ese­cu­zio­ne di container di Linux. Sulle di­stri­bu­zio­ni di Linux come CentOS, Ubuntu, Debian ecc., questo strumento è semplice e rapido da in­stal­la­re. Nella maggior parte dei casi, i pacchetti d’in­stal­la­zio­ne sono già di­spo­ni­bi­li nel sistema di gestione dei pacchetti del relativo software di sistema e si possono in­stal­la­re con l’aiuto dei tipici comandi del terminale.

N.B.

Un’al­ter­na­ti­va ai pacchetti nativi del re­po­si­to­ry di sistema è rap­pre­sen­ta­ta dal Kubic Project su opensuse.org che mette a di­spo­si­zio­ne vari pacchetti d’in­stal­la­zio­ne di Podman per diverse di­stri­bu­zio­ni e release.

Debian, Ubuntu, Raspbian:

sudo apt-get update -qq
sudo apt-get -qq -y install podman

Fedora, CentOS, Amazon Linux 2, RHEL 7:

sudo yum -y install podman

OpenSUSE:

sudo zipper install podman

In­stal­la­re Podman su Windows o macOS

Negli ambienti Linux, Podman è di casa. Potete però usare il container engine anche sui di­spo­si­ti­vi che uti­liz­za­no come sistema operativo Windows o macOS. L’unico requisito è che possiate accedere da questi di­spo­si­ti­vi a un’in­stal­la­zio­ne di Linux, che giri su una macchina virtuale di un host o che sia ac­ces­si­bi­le tramite la rete.

Se avete una di queste pos­si­bi­li­tà di accesso, avrete bisogno anche di un Podman Remote Client per stabilire una con­nes­sio­ne SSH con il back end di Podman.

N.B.

Le in­for­ma­zio­ni per la con­nes­sio­ne SSH devono essere inserite nel file di con­fi­gu­ra­zio­ne podman-remote.conf. Il seguente tutorial di Podman Remote Client su GitHub vi fornirà in­for­ma­zio­ni det­ta­glia­te per la con­fi­gu­ra­zio­ne e l’utilizzo.

Come funziona il Container Image Ma­na­ge­ment con Podman

Per quel che riguarda le sue ca­rat­te­ri­sti­che e sintassi, Podman si orienta sul pre­de­ces­so­re Docker. Perciò, per l’in­stal­la­zio­ne dei container de­si­de­ra­ti, potrete attingere dal grande pool di immagini Docker già pronte all’uso, co­no­sciu­to anche come Docker Hub. Con l’aiuto del comando pull, potrete scaricare da lì tutte le immagini de­si­de­ra­te dell’ap­pli­ca­zio­ne, per esempio l’ultima versione di Ubuntu:

podman pull hub.docker.com/_/ubuntu:latest

Il percorso di sal­va­tag­gio ufficiale per le singole immagini è il percorso locale “.local/share/con­tai­ners/”, sebbene ciascun utente disponga del proprio namespace, in modo da separare il setup del proprio container dal setup gestito dalla root. Con il seguente comando potrete avere una pa­no­ra­mi­ca delle immagini salvate a livello locale:

podman images

Per un elenco delle immagini root bisogna anteporre il tipico comando di Linux “sudo”:

sudo podman images
Vai al menu prin­ci­pa­le