Situatie
Quadlet îți permite să definești containere Podman în fișiere simple, iar systemd se ocupă de pornire, oprire și restart automat. Un fișier de tip .container este transformat de Podman într-un serviciu systemd.
1. Verifică Podman
Pe sistemul unde rulezi containerul:
podman --version
podman info --format '{{.Host.CgroupsVersion}}'
Quadlet necesită cgroups v2.
2. Creează directorul Quadlet
Pentru un container rootless, folosește:
mkdir -p ~/.config/containers/systemd
Acesta este unul dintre directoarele standard în care Quadlet caută configurațiile utilizatorului.
3. Creează definiția containerului
Exemplu: un server Nginx care ascultă pe portul 8080.
Creează fișierul:
nano ~/.config/containers/systemd/nginx.container
Conținut:
[Unit]
Description=NGINX container
[Container]
Image=docker.io/library/nginx:alpine
PublishPort=8080:80
[Service]
Restart=always
Cheia Image definește imaginea, iar PublishPort mapează portul 8080 al sistemului la portul 80 din container. Pentru imagine este recomandată folosirea unui nume complet calificat.
4. Reîncarcă systemd
systemctl --user daemon-reload
Quadlet generează serviciul systemd pornind de la fișierul .container.
5. Pornește containerul
systemctl --user start nginx.service
Verifică starea:
systemctl --user status nginx.service
Și verifică direct containerul:
podman ps
6. Testează aplicația
Pe aceeași mașină:
curl http://localhost:8080
Ar trebui să primești pagina implicită Nginx.
7. Pornește automat după restart
Pentru Quadlet nu este necesar să activezi manual serviciul generat cu systemctl enable. Pornirea automată se configurează în fișierul Quadlet prin secțiunea Install.
Modifică fișierul astfel:
[Unit]
Description=NGINX container
[Container]
Image=docker.io/library/nginx:alpine
PublishPort=8080:80
[Service]
Restart=always
[Install]
WantedBy=default.target
Apoi:
systemctl --user daemon-reload
Pentru un serviciu rootless care trebuie să ruleze și atunci când utilizatorul nu este autentificat, activează lingering:
sudo loginctl enable-linger $USER
Lingering permite instanței systemd a utilizatorului să rămână activă după logout și după reboot.
8. Vezi logurile
journalctl --user -u nginx.service
Pentru urmărire în timp real:
journalctl --user -u nginx.service -f
Podman recomandă journalctl pentru verificarea logurilor serviciilor Quadlet.
9. Dacă serviciul nu este găsit
Dacă primești o eroare de tip „Unit not found”, verifică generarea unității:
systemd-analyze --user --generators=true verify nginx.service
Pentru o analiză mai detaliată poți rula generatorul Quadlet în mod dry-run:
/usr/lib/systemd/system-generators/podman-system-generator --user --dryrun
Aceste comenzi ajută la identificarea erorilor de sintaxă sau a opțiunilor Quadlet incompatibile.
Fluxul de bază
În practică, ciclul este:
nginx.container
↓
systemd --user daemon-reload
↓
nginx.service
↓
podman run
↓
containerul rulează
Avantajul principal este că configurația containerului rămâne declarativă și este gestionată de systemd, inclusiv restartul și pornirea automată.
Rootless vs. rootful
Pentru rootless:
~/.config/containers/systemd/
systemctl --user
podman ps
Pentru rootful:
/etc/containers/systemd/
sudo systemctl
sudo podman ps
Directorul rootless și cel rootful sunt diferite, iar comenzile systemd trebuie executate în contextul corespunzător.
Pe scurt: scrii un fișier .container, îl pui în directorul Quadlet, rulezi daemon-reload, apoi gestionezi containerul cu systemctl. Asta elimină nevoia de scripturi separate pentru pornire și restart.
Leave A Comment?