GNU/Linux >> Znalost Linux >  >> Linux

Jak spouštět kontejnery jako službu Systemd s Podmanem

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


Linux
  1. Jak přesměrovat výstup služby systemd do souboru

  2. Jak zastavit službu systemd

  3. Jak odeslat e-mail, pokud je služba systemd restartována?

  1. Jak spravovat služby Systemd pomocí Systemctl v systému Linux

  2. Jak vytvořit službu Systemd v Linuxu

  3. Linux – jak získat méně Ttys s Systemd?

  1. Jak spustím skript před vším ostatním při vypnutí pomocí systemd?

  2. Jak spustit skript s systemd těsně před vypnutím?

  3. Jak získat méně ttys pomocí Systemd?