Come sappiamo, podman è uno strumento open source privo di daemon che fornisce un ambiente per creare, eseguire e gestire i container. L'esecuzione di container come servizio systemd significa che i container verranno avviati automaticamente al riavvio del sistema.
In questo post impareremo come eseguire container come servizio systemd con podman su distribuzioni basate su RHEL come RHEL 8, CentOS 8 e Rocky Linux 8.
Prerequisiti:
- Installazione minima del sistema operativo basato su RHEL.
- Connessione Internet stabile
- Utente Sudo con privilegi di root
In questa dimostrazione, sto utilizzando RHEL 8.5 minimo, ma questi passaggi sono applicabili anche per CentOS 8 e Rocky Linux 8. Passiamo ai passaggi,
Passaggio 1) Installa Podman
Per installare podman su RHEL 8 , esegui
$ sudo dnf install @container-tools -y
Per CentOS 8 / Rocky Linux 8, esegui
$ sudo dnf install -y podman
Verifica l'installazione di Podman
Per verificare se podman è stato installato correttamente o meno, prova a girare il contenitore "hello-world" usando il comando podman sotto.
$ podman -v podman version 3.3.1 $ $ podman run 'hello-world'
Nota:quando eseguiamo podman per la prima volta, ci viene chiesto di scegliere il registro in cui desideri scaricare l'immagine del contenitore.
L'output del comando precedente vorrebbe di seguito:
Il prefetto sopra conferma che podman è stato installato correttamente. Passiamo al passaggio successivo.
Passaggio 2) Genera il servizio Systemd di un container
Supponiamo di voler generare il servizio systemd per il contenitore rsyslog. Per prima cosa avvia il contenitore rsyslog usando i seguenti comandi podman,
$ podman run -d --name <Container-Name> <Image-Name>
Nota:se desideri scaricare l'immagine del contenitore rsyslog da un registro specifico, utilizza la seguente sintassi:
$ podman run -d --name container-name <registry-URL>/<image-name>
In questa dimostrazione, ho utilizzato il registro di Red Hat. Quindi prima accedi al registro
$ podman login registry.access.redhat.com Username: <Specify-User-Name> Password: <Enter-Password> Login Succeeded! $
Ora prova a far girare il contenitore usando il seguente comando podman,
$ podman run -d --name rsyslog-server registry.access.redhat.com/rhel7/rsyslog $ podman ps
Ora crea il servizio systemd per il contenitore rsyslog-server, esegui i seguenti comandi
$ mkdir -p .config/systemd/user $ cd .config/systemd/user/ $ podman generate systemd --name rsyslog-server --files --new /home/sysops/.config/systemd/user/container-rsyslog-server.service $
Come possiamo sopra, viene creato il servizio systemd.
Per maggiori dettagli sul comando 'podman generate systemd', fare riferimento alla sua pagina di aiuto
$ podman generate systemd --help
Passaggio 3) Avvia e abilita il servizio Container Systemd
Esegui il seguente comando systemctl per avviare e abilitare il servizio systemd per il contenitore rsyslog-server.
$ cd .config/systemd/user/ $ systemctl --user daemon-reload $ systemctl --user enable container-rsyslog-server.service $ systemctl --user restart container-rsyslog-server.service
Ora verifica lo stato del servizio systemd e lo stato del contenitore, esegui
$ systemctl --user status container-rsyslog-server.service $ podman ps
Ora, quando il sistema viene riavviato, il container verrà avviato automaticamente tramite il suo servizio systemd. Riavviamolo quindi una volta e verifichiamo il servizio container.
$ sudo reboot
Una volta che il sistema è di nuovo online, accedi al sistema e verifica il servizio contenitore
$ podman ps $ cd .config/systemd/user/ $ systemctl --user status container-rsyslog-server.service
Ottimo, questo conferma che il contenitore rsyslog-server viene avviato automaticamente dopo il riavvio tramite il suo servizio systemd.
Questo è tutto da questo post, spero che tu l'abbia trovato informativo. Per favore condividi il tuo feedback e le tue domande.
Leggi anche :Come eseguire Jenkins Container come servizio Systemd con Docker