Vai al contenuto

Introduzione

Podman è un runtime alternativo per container compatibile con Docker che, a differenza di quest'ultimo, è incluso nei repository Rocky Linux e può eseguire i container come servizio systemd.

Installare Podman

Utilizzare l'utility dnf per installare Podman:

dnf install podman

Aggiungere un container

Prendiamo come esempio una piattaforma cloud self-hosted Nextcloud:

podman run -d -p 8080:80 nextcloud

Verrà richiesto di selezionare il container registry da cui scaricarlo. Nel nostro esempio, si utilizzerà docker.io/library/nextcloud:latest.

Una volta scaricato il contenitore Nextcloud, questo verrà eseguito.

Inserite indirizzo_ip:8080 nel vostro browser web (supponendo di aver aperto la porta in firewalld) e configurate Nextcloud:

Nextcloud in container

Eseguire contenitori come servizi systemd

Utilizzare quadlet

Dalla versione 4.4, Podman viene fornito con Quadlet, un generatore di systemd che può generare unitary file per servizi systemd rootless e rootful.

I file quadlet per i servizi rootful possono essere presenti in

  • /etc/containers/systemd/
  • /usr/share/containers/systemd/

mentre i file rootless possono essere salvati in alternativa in

  • $XDG_CONFIG_HOME/containers/systemd/ or ~/.config/containers/systemd/
  • /etc/containers/systemd/users/$(UID)
  • /etc/containers/systemd/users/

Sono supportati singoli container, pod, immagini, reti, volumi e file kube, ma ritornando all'esempio precedentemente implementato di Nextcloud. Creare un nuovo file ~/.config/containers/systemd/nextcloud.container con il seguente contenuto:

[Container]
Image=nextcloud
PublishPort=8080:80

Sono disponibili molte altre opzioni.

Per eseguire il generator e far sapere a systemd che c'è un nuovo servizio da eseguire:

systemctl --user daemon-reload

Per avviare il servizio, eseguire:

systemctl --user start nextcloud.service

Nota

Se si è già creato un file in una delle directory per i servizi rootful, omettere il flag `--user`.

Per eseguire automaticamente il container all'avvio del sistema o al login dell'utente, si può aggiungere un'altra sezione al file nextcloud.container:

[Install]
WantedBy=default.target

Poiché i file del servizio generati sono considerati temporanei, non possono essere abilitati da systemd. Per ovviare a questo problema, il generator applica manualmente le installazioni durante la generazione. In questo modo si abilitano effettivamente anche i file dei servizi.

Sono supportati altri tipi di file: pod, volume, network, image, and kube. Pods, per esempio, può essere usato per raggruppare i container – i servizi systemd generati e le loro dipendenze (creare il pod prima dei container) sono gestiti automaticamente da systemd.

Utilizzare podman generate systemd

Podman fornisce inoltre il sottocomando generate systemd. Può essere usato per generare i file di servizio di systemd.

Attenzione

`generate systemd` è ora deprecato e non riceverà ulteriori funzioni. Si raccomanda l'uso di Quadlet.

Ora lo si farà con Nextcloud. Eseguire:

podman ps

Si otterrà un elenco di container in esecuzione:

04f7553f431a  docker.io/library/nextcloud:latest  apache2-foregroun...  5 minutes ago  Up 5 minutes  0.0.0.0:8080->80/tcp  compassionate_meninsky

Come visto sopra, il nome del nostro container è compassionate_meninsky.

Per creare un servizio systemd per il container Nextcloud e abilitarlo al riavvio, eseguire quanto segue:

podman generate systemd --name compassionate_meninsky > /usr/lib/systemd/system/nextcloud.service
systemctl enable nextcloud

Sostituire compassionate_meninsky con il nome assegnato al container.

Quando il sistema si riavvia, Nextcloud si riavvia in Podman.

Author: Neel Chauhan

Contributors: Steven Spencer, Ganna Zhyrnova, Christian Steinert