Jak víme, podman je open-source nástroj bez démonů, který poskytuje prostředí pro vytváření, spouštění a správu kontejnerů. Spuštění kontejnerů jako systemd service znamená, že kontejnery se automaticky spustí, když se systém restartuje.
V tomto příspěvku se naučíme, jak spouštět kontejnery jako systemd službu s podmanem na distribucích založených na RHEL, jako je RHEL 8, CentOS 8 a Rocky Linux 8.
Předpoklady:
- Minimální instalace OS na bázi RHEL.
- Stabilní připojení k internetu
- Uživatel Sudo s právy root
V této ukázce používám minimální RHEL 8.5, ale tyto kroky lze použít také pro CentOS 8 a Rocky Linux 8. Pojďme se vrhnout na kroky,
Krok 1) Nainstalujte Podman
Chcete-li nainstalovat podman na RHEL 8, spusťte
$ sudo dnf install @container-tools -y
Pro CentOS 8 / Rocky Linux 8 spusťte
$ sudo dnf install -y podman
Ověřte instalaci podman
Chcete-li zkontrolovat, zda je podman nainstalován úspěšně nebo ne, zkuste otočit kontejner „hello-world“ pomocí příkazu podman.
$ podman -v podman version 3.3.1 $ $ podman run 'hello-world'
Poznámka:Když spustíme podman poprvé, vyzve nás, abychom vybrali registr, do kterého chcete stáhnout obrázek kontejneru.
Výstup výše uvedeného příkazu by chtěl níže:
Prefekt výše potvrzuje, že podman je úspěšně nainstalován. Pojďme k dalšímu kroku.
Krok 2) Generování systémové služby kontejneru
Předpokládejme, že chceme vygenerovat službu systemd pro kontejner rsyslog. Nejprve otočte kontejner rsyslog pomocí následujících příkazů podman,
$ podman run -d --name <Container-Name> <Image-Name>
Poznámka:Pokud si přejete stáhnout bitovou kopii kontejneru rsyslog z konkrétního registru, použijte následující syntaxi:
$ podman run -d --name container-name <registry-URL>/<image-name>
V této ukázce jsem použil registr Red hat. Nejprve se tedy přihlaste do registru
$ podman login registry.access.redhat.com Username: <Specify-User-Name> Password: <Enter-Password> Login Succeeded! $
Nyní zkuste kontejner roztočit pomocí následujícího příkazu podman,
$ podman run -d --name rsyslog-server registry.access.redhat.com/rhel7/rsyslog $ podman ps
Nyní vytvořte službu systemd pro kontejner rsyslog-server, spusťte následující příkazy
$ 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 $
Jak můžeme výše, je vytvořena služba systemd.
Další podrobnosti o příkazu ‚podman generovat systemd‘ najdete na stránce nápovědy
$ podman generate systemd --help
Krok 3) Spusťte a povolte službu Container Systemd
Spusťte následující příkaz systemctl pro spuštění a povolení služby systemd pro kontejner rsyslog-server.
$ cd .config/systemd/user/ $ systemctl --user daemon-reload $ systemctl --user enable container-rsyslog-server.service $ systemctl --user restart container-rsyslog-server.service
Nyní ověřte stav služby systemd a stav kontejneru, spusťte
$ systemctl --user status container-rsyslog-server.service $ podman ps
Nyní, když je systém restartován, kontejner se automaticky spustí prostřednictvím jeho služby systemd. Pojďme jej tedy jednou restartovat a ověřit službu kontejneru.
$ sudo reboot
Jakmile bude systém opět online, přihlaste se do systému a ověřte kontejnerovou službu
$ podman ps $ cd .config/systemd/user/ $ systemctl --user status container-rsyslog-server.service
Skvělé, to potvrzuje, že kontejner rsyslog-server se automaticky spouští po restartu prostřednictvím jeho služby systemd.
To je z tohoto příspěvku vše, doufám, že jste našli informace. Podělte se prosím o své názory a dotazy.
Přečtěte si také :Jak spustit Jenkins Container jako službu Systemd pomocí Dockeru