Podman e Docker Compose: Guida completa per Creare e Gestire Applicazioni Scalabili e Sicure
Ti sei mai chiesto/a come usare Podman e Docker Compose? Vediamo insieme i vantaggi e le alternative a disposizione.
Podman: cos’è (short version)
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.
Docker Compose: cos’è (short version)
Docker Compose è uno strumento per definire ed eseguire applicazioni Docker multi-container. Con questo strumento, basta usare un file YAML per configurare diversi servizi che compongono la tua applicazione ed avviarli con un solo comando, creando e avviando tutti i servizi necessari.
Disponibile per Mac, Windows e Linux, possiamo installarlo tramite i seguenti comandi, che scaricano il pacchetto tramite curl e poi gli assegnano i permessi di esecuzione:
$ sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose
Altrimenti, la maggior parte dei package manager permettono di installarlo da riga di comando:
$ sudo apt install docker-compose
Usare Docker Compose con Podman
Esistono moltissimi esempi online di file docker-compose.yml da usare come esempio: in questo articolo, useremo questo repository analizzato nel precedente articolo sullo stack MEAN.
Prima di eseguire Docker Compose, ci assicuriamo che tutti i pacchetti richiesti siano installati e configuriamo il servizio di sistema Podman (in versione 3.0 o successiva) utilizzando systemd.
Oltre a Podman e alle sue dipendenze, devono essere installati i pacchetti podman-compose e docker-compose, per cui, a seconda del package manager a disposizione, installiamo i suddetti pacchetti.
Dopo averlo fatto, avviamo il servizio di Podman attivato dalla socket utilizzando il seguente comando:
$ sudo systemctl start podman.socket
A questo punto, utilizziamo come di consueto Docker Compose per avviare il nostro set di servizi con il seguente comando:
$ sudo docker-compose up
Una volta che i servizi saranno stati avviati e pronti all’uso, potremo usare come di consueto i comandi che useremmo con Docker:
$ sudo podman ps # container attivi
$ sudo podman volume ls # elenco dei volumi
...
Usare Podman Compose
Com’è ovvio, non potevamo non aspettarci un parallelo al consueto Docker Compose: in questo caso, non ci resta che installarlo e provarlo!
Installazione con pip3
Per sistemi che abbiano installato pip3, utilizzare il seguente comando:
$ pip3 install podman-compose
Installazione con dnf
Per sistemi Fedora e similari, utilizzare il seguente comando:
$ sudo dnf install podman-compose
Dopodiché, per poterlo utilizzare, è sufficiente avere a disposizione il classico file docker-compose.yml, ma sostituendo al classico comando docker-compose, l’istruzione podman-compose:
$ podman-compose --help
$ podman-compose up # crea ed avvia i servizi con relativi container
$ podman-compose down # arresta e rimuove i servizi con relativi container, volumi, immagini, ecc.
$ podman-compose ps # elenco dei servizi
...
Risorse utili
- Repository ufficiale di Podman Compose
- Docker - per cominciare bene con Docker e Kubernetes
- Kubernetes - Guida per gestire e orchestrare i container
- Tantissimi esempi utili per comprendere Docker Compose
- Esplorando il Dockerfile