Podman: il container engine senza demone

Negli ultimi anni la virtualizzazione dei container ha acquisito sempre maggiore importanza. Questa tecnologia è diventata componente base per diversi strumenti di controllo di namespace virtuali (in italiano: “spazio dei nomi”), soprattutto dopo la prima apparizione nel 2013 di Docker che l’ha resa nota. Una delle soluzioni più interessanti è rappresentata da Podman. Concepito inizialmente come strumento di debugging per CRI-O, che avrebbe dovuto semplificare il lavoro con i cluster di Kubernetes, è diventato rapidamente un software dal motore autonomo e completo per la gestione di container.

N.B.

I namespace o spazi di nomi permettono di raggruppare in un container elementi selezionati di un codice (per esempio classi).

Di seguito scoprirete cosa rende Podman davvero speciale e per quali scopi possiamo utilizzare questo strumento per i container.

Cos’è Podman?

Podman (abbreviazione di: Pod Manager) è un container engine rilasciato per la prima volta nel mese di febbraio del 2018. È stato sviluppato dalla Red Hat, società statunitense di sviluppo di software, famosa soprattutto per le sue efficaci soluzioni aziendali per diversi progetti open source come Red Hat Enterprise Linux (RHEL) oppure OpenStack. Partendo dall’esperienza di Docker, Podman all’origine non era stato concepito come engine autonomo, ma come un semplice strumento di debbugging 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 interprete della riga di comando del programma standard. Questo rende addirittura possibile utilizzare 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 è relativamente semplice. La novità decisiva che caratterizza Podman è la rinuncia a un demone centrale come istanza di controllo del singolo container. Questo vi offre la possibilità di accedere alle diverse applicazioni virtualizzate anche senza permessi di root.

N.B.

Per i sistemi operativi Unix/Linux, il demone rappresenta un programma eseguito in background che mette a disposizione servizi e processi precisi.

Podman gira su tutte le distribuzioni di Linux disponibili 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ò installare direttamente attraverso la gestione dei pacchetti del relativo sistema.

Configurazione e funzionamento di Podman

Oltre alla rinuncia a un demone centrale, anche i cosiddetti pod rappresentano una caratteristica fondamentale che contraddistingue Podman. Questi pod, che si rifanno al concetto dei pod di Kubernetes, rappresentano l’unione di più container all’interno di uno stesso namespace di Linux, che condividono risorse precise. Questo permette di combinare in modo flessibile diverse applicazioni virtualizzate.

Come già detto in precedenza, è possibile eseguire i singoli container sull’host come utente tradizionale senza permessi di root, mentre solo all’interno di un container i processi sono controllati 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 amministratore e questo conferisce all’ambiente virtualizzato di Podman uno standard di sicurezza elevato.

I cosiddetti infra container rappresentano il core di un pod e sono responsabili esclusivamente della funzionalità dell’unione, 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 scritto in C Conmon, che monitora le singole componenti virtualizzate e rende ad esempio i log sicuri. Per di più, questo strumento funge da interfaccia per il terminale del container corrispondente. Come runtime per i container, Podman utilizza il software runC, utilizzato anche per molte altre soluzioni come Docker o rkt.

Tutorial su Podman: i primi passi con Podman

Dopo avervi presentato le caratteristiche principali di Podman, vi riassumiamo nel seguente tutorial i punti più importanti per cominciare a lavorare con il container engine.

Installare Podman con Linux

Podman è un software per l’esecuzione di container di Linux. Sulle distribuzioni di Linux come CentOS, Ubuntu, Debian ecc., questo strumento è semplice e rapido da installare. Nella maggior parte dei casi, i pacchetti d’installazione sono già disponibili nel sistema di gestione dei pacchetti del relativo software di sistema e si possono installare con l’aiuto dei tipici comandi del terminale.

N.B.

Un’alternativa ai pacchetti nativi del repository di sistema è rappresentata dal Kubic Project su opensuse.org che mette a disposizione vari pacchetti d’installazione di Podman per diverse distribuzioni 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

Installare Podman su Windows o macOS

Negli ambienti Linux, Podman è di casa. Potete però usare il container engine anche sui dispositivi che utilizzano come sistema operativo Windows o macOS. L’unico requisito è che possiate accedere da questi dispositivi a un’installazione di Linux, che giri su una macchina virtuale di un host o che sia accessibile tramite la rete.

Se avete una di queste possibilità di accesso, avrete bisogno anche di un Podman Remote Client per stabilire una connessione SSH con il back end di Podman.

N.B.

Le informazioni per la connessione SSH devono essere inserite nel file di configurazione podman-remote.conf. Il seguente tutorial di Podman Remote Client su GitHub vi fornirà informazioni dettagliate per la configurazione e l’utilizzo.

Come funziona il Container Image Management con Podman

Per quel che riguarda le sue caratteristiche e sintassi, Podman si orienta sul predecessore Docker. Perciò, per l’installazione dei container desiderati, potrete attingere dal grande pool di immagini Docker già pronte all’uso, conosciuto anche come Docker Hub. Con l’aiuto del comando pull, potrete scaricare da lì tutte le immagini desiderate dell’applicazione, per esempio l’ultima versione di Ubuntu:

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

Il percorso di salvataggio ufficiale per le singole immagini è il percorso locale “.local/share/containers/”, 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 panoramica 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

Abbiamo una proposta per te:
Web hosting a partire da 1 €/mese!

Dominio gratis
Certificato SSL Wildcard incluso
Assistenza clienti 24/7
A partire da 1 €/mese IVA escl. per un anno,
poi 8 €/ mese IVA escl.