GNU/Linux >> Znalost Linux >  >> Cent OS

Jak nainstalovat a používat Podman v Rocky Linux/Alma Linux/Centos 8

Podman doplňuje Buildah a Skopeo tím, že nabízí prostředí podobné příkazovému řádku Docker:umožňuje uživatelům spouštět samostatné (neorganizované) kontejnery. A Podman nepotřebuje démona ke spuštění kontejnerů a podů, takže se můžeme snadno rozloučit s velkými tlustými démony. Na pozadí nic nedělají žádní démoni, což znamená, že Podman lze integrovat do systémových služeb prostřednictvím systemd .

V této příručce se naučíme, jak nainstalovat Podman v Rocky Linux/Alma Linux/Centos 8. Tento příspěvek také funguje pro deriváty RHEL 8, jako je Oracle Linux.

Související příspěvky

  • Jak nainstalovat a používat Podman v Debianu 11
  • Jak nainstalovat a používat Podman ve Fedoře 34/35
  • Jak nainstalovat a používat Podman v OpenSUSE Leap 15.3
  • Jak nainstalovat a nakonfigurovat docker v Rocky Linux/Centos 8
  • Začínáme s Docker Compose with Example
  • Docker jako sestavovací agent – ​​Spusťte Jenkins staví na Dockeru

Předpoklady

Chcete-li pokračovat, ujistěte se, že máte následující:

  • Aktualizovaný Rocky Linux/Centos 8
  • Přístup uživatele root nebo uživatel s přístupem sudo
  • Přístup k internetu

Obsah

  1. Zajištění aktuálnosti serveru
  2. Instalace podman
  3. Příklady příkazového řádku
  4. Spusťte postgres persistentní kontejner
  5. Správa kontejnerů jako systémových služeb prostřednictvím systemd a Podman

1. Zajištění aktuálnosti serveru

Pomocí tohoto příkazu zajistíte aktualizaci našich serverových balíčků

sudo dnf update -y

Ujistěte se, že jsou nainstalovány běžné balíčky

sudo dnf install -y vim

2. Instalace Podman

Podman je k dispozici ve výchozím úložišti AppStream pro CentOS 8 a Stream. Nainstalujte jej pomocí tohoto příkazu:

sudo dnf install -y podman

Tento příkaz nainstaluje Podman a také jeho závislosti: atomic-registriesrunCskopeo-containers a zásady SELinux.

To je vše. Nyní můžeme hrát s Podmanem.

3. Příklady příkazového řádku

Pojďme prozkoumat spuštění Rocky Linux Container pomocí podman.

Na dockeru bychom použili tento příkaz ke spuštění rocky linuxového kontejneru:

docker run -it rockylinux/rockylinux:8.4 sh

Toto se nezdaří, protože neexistuje žádný docker příkaz na mém serveru Rocky Linux. Docker můžeme nahradit podmanem:

podman run -it rockylinux/rockylinux:8.4 sh

Spusťte několik příkazů, abychom potvrdili, že funguje podle očekávání:

$ podman run -it rockylinux/rockylinux:8.4 sh
✔ docker.io/rockylinux/rockylinux:8.4
Trying to pull docker.io/rockylinux/rockylinux:8.4...
Getting image source signatures
Copying blob 1b474f8e669e done
Copying config 333da17614 done
Writing manifest to image destination
Storing signatures
sh-4.4# ps ax
    PID TTY      STAT   TIME COMMAND
      1 pts/0    Ss     0:00 sh
      6 pts/0    R+     0:00 ps ax
sh-4.4# exit
exit

Chcete-li zkontrolovat stav kontejneru, použijte podman ps příkaz

$ podman ps -a
CONTAINER ID  IMAGE                                COMMAND     CREATED        STATUS                    PORTS       NAMES
5f81814c698e  docker.io/rockylinux/rockylinux:8.4  sh          3 minutes ago  Exited (0) 3 minutes ago              competent_pasteur

Chcete-li kontejner smazat, použijte podman rm :

$ podman rm 5f81814c698e
5f81814c698ef09484c66d4427fda5de21c4dca1766a67ee108d256117460d71
$ podman images
REPOSITORY                       TAG         IMAGE ID      CREATED       SIZE
docker.io/rockylinux/rockylinux  8.4         333da17614b6  4 months ago  234 MB
[[email protected] ~]$ podman image rm rockylinux/rockylinux
Untagged: docker.io/rockylinux/rockylinux:8.4
Deleted: 333da17614b642a228c30edcb2bddfdf17b2d713ae71b7930c44b714ff8b92e7

Seznam obrázků:

$ podman images
REPOSITORY                       TAG         IMAGE ID      CREATED       SIZE
docker.io/rockylinux/rockylinux  8.4         333da17614b6  4 months ago  234 MB

Obrázek můžeme smazat pomocí obrázku podman image rm příkaz:

$ podman image rm rockylinux/rockylinux
Untagged: docker.io/rockylinux/rockylinux:8.4
Deleted: 333da17614b642a228c30edcb2bddfdf17b2d713ae71b7930c44b714ff8b92e7

Z výše uvedeného můžeme potvrdit, že příkaz podman používá stejnou syntaxi jako docker

Spusťte perzistentní kontejner Postgres

Dále se podívejme, jak můžeme spustit trvalý kontejner. V tomto příkladu spustíme kontejner Postgres 14 a připojíme data postgres k místnímu svazku, aby mohl přetrvávat restarty. Vzhledem k tomu, že kontejnery jsou pomíjivé, data budou ztracena, pokud je neuložíme do místního svazku.

Stáhněte docker.io/library/postgres:14.0-alpine obrázek

$ podman pull docker.io/library/postgres:14.0-alpine
✔ docker.io/library/postgres:14.0-alpine
Trying to pull docker.io/library/postgres:14.0-alpine...
Getting image source signatures
Copying blob 82e9eb77798b done
Copying blob c6b2245b2f36 done
Copying blob a0d0a0d46f8b done
Copying blob 3da258773353 done
Copying blob ccd761727716 done
Copying blob 5034a66b99e6 done
Copying blob 2c7ee7bc69e8 done
Copying blob 028554d3b6cc done
Copying config 87440f4e7f done
Writing manifest to image destination
Storing signatures
87440f4e7f9e60607dc11a4f0590a1c69b3a1c075211df478e22b0c27fb263e6

Potvrďte obrázky

$ podman images
REPOSITORY                  TAG          IMAGE ID      CREATED      SIZE
docker.io/library/postgres  14.0-alpine  87440f4e7f9e  2 weeks ago  198 MB

Zkontrolujte obrázek pomocí

$ podman inspect 87440f4e7f9e

Pojďme nastavit složku, která bude zpracovávat data Postgres, jakmile spustíme náš kontejner:

$ mkdir -p ~/apps/postgres/data

Spusťte to

podman run -d \
    -p 5432:5432 \
    -v ~/apps/postgres/data:/var/lib/postgresql/data:Z \
    -e POSTGRES_PASSWORD=Sup3rSecre7 \
    -e POSTGRES_USER=citizix_user \
    -e POSTGRES_DB=citizix_db \
    docker.io/library/postgres:14.0-alpine

Toto je můj výstup

$ podman run -d \
>     -p 5432:5432 \
>     -v ~/apps/postgres/data:/var/lib/postgresql/data:Z \
>     -e POSTGRES_PASSWORD=Sup3rSecre7 \
>     -e POSTGRES_USER=citizix_user \
>     -e POSTGRES_DB=citizix_db \
>     docker.io/library/postgres:14.0-alpine
9aa1fb68beeeb7c68a9ea5afb4ca91bf07acf3fef92bf21249a6d8a4e43f5dbd

Zkontrolujte procesy:

$ podman ps
CONTAINER ID  IMAGE                                   COMMAND     CREATED         STATUS             PORTS                   NAMES
9aa1fb68beee  docker.io/library/postgres:14.0-alpine  postgres    46 seconds ago  Up 47 seconds ago  0.0.0.0:5432->5432/tcp  gracious_jemison

Tímto potvrďte protokoly kontejneru. Můžete vidět, že se inicializuje db

$ podman logs 9aa1fb68beee | head
performing post-bootstrap initialization ... sh: locale: not found
2021-11-11 09:05:00.481 UTC [30] WARNING:  no usable system locales were found
The files belonging to this database system will be owned by user "postgres".
This user must also own the server process.

The database cluster will be initialized with locale "en_US.utf8".
The default database encoding has accordingly been set to "UTF8".
The default text search configuration will be set to "english".

Data page checksums are disabled.

fixing permissions on existing directory /var/lib/postgresql/data ... ok

Pojďme se připojit k databázi a provést nějaké operace

$ podman exec -it 9aa1fb68beee /bin/bash
bash-5.1# psql -U citizix_user -d citizix_db;
psql (14.0)
Type "help" for help.

citizix_db=# select version();
                                                   version
--------------------------------------------------------------------------------------------------------------
 PostgreSQL 14.0 on x86_64-pc-linux-musl, compiled by gcc (Alpine 10.3.1_git20210424) 10.3.1 20210424, 64-bit
(1 row)

citizix_db=#

Dále prozkoumáme zabíjení a odstraňování kontejneru. Můžeme použít podman kill k zastavení nádoby. Tím se kontejner zastaví, ale stále tam bude. Použijte podman ps -a vypsat. Chcete-li jej zcela odstranit, podman rm -f .

$ podman kill 9aa1fb68beee
9aa1fb68beee
$ podman ps -a
CONTAINER ID  IMAGE                                   COMMAND     CREATED         STATUS                       PORTS                   NAMES
9aa1fb68beee  docker.io/library/postgres:14.0-alpine  postgres    14 minutes ago  Exited (137) 20 seconds ago  0.0.0.0:5432->5432/tcp  gracious_jemison
$ podman rm -f 9aa1fb68beee
9aa1fb68beeeb7c68a9ea5afb4ca91bf07acf3fef92bf21249a6d8a4e43f5dbd

Správa kontejnerů jako systémových služeb prostřednictvím systemd a Podman

Můžeme spravovat kontejnery podman prostřednictvím systemd. Pojďme vytvořit systemd zdrojový soubor pro manipulaci s kontejnerem postgres, který jsme právě vytvořili výše.

Vytvořte soubor postgres podman:

sudo vim /etc/systemd/system/postgres-podman.service

Přidat tento obsah

[Unit]
Description=Custom Postgres Podman Container
After=network.target

[Service]
Type=simple
TimeoutStartSec=5m
ExecStartPre=-/usr/bin/podman rm -f postgrespodman

ExecStart=/usr/bin/podman run \
    -p 5432:5432 \
    -v /home/rocky/apps/postgres/data:/var/lib/postgresql/data:Z \
    -e POSTGRES_PASSWORD=Sup3rSecre7 \
    -e POSTGRES_USER=citizix_user \
    -e POSTGRES_DB=citizix_db \
    docker.io/library/postgres:14.0-alpine

ExecReload=-/usr/bin/podman stop postgrespodman
ExecReload=-/usr/bin/podman rm postgrespodman
ExecStop=-/usr/bin/podman stop postgrespodman
Restart=always
RestartSec=30

[Install]

Poté můžeme znovu načíst systemd katalog a spusťte službu:

sudo systemctl daemon-reload
sudo systemctl start postgres-podman

Potvrďte stav služby

$ sudo systemctl status postgres-podman
● postgres-podman.service - Custom Postgres Podman Container
   Loaded: loaded (/etc/systemd/system/postgres-podman.service; static; vendor preset: disabled)
   Active: active (running) since Thu 2021-11-11 10:07:09 UTC; 21s ago
  Process: 71868 ExecStop=/usr/bin/podman stop postgrespodman (code=exited, status=125)
  Process: 71943 ExecStartPre=/usr/bin/podman rm -f postgrespodman (code=exited, status=1/FAILURE)
 Main PID: 71973 (podman)
    Tasks: 11 (limit: 23167)
   Memory: 27.8M
   CGroup: /system.slice/postgres-podman.service
           ├─71973 /usr/bin/podman run -p 5432:5432 -v /home/rocky/apps/postgres/data:/var/lib/postgresql/data:Z -e POSTGRES_PASSWORD=Sup3rSecre7 -e POSTGRES_USER=citizix_user -e POSTGRE>
           └─72073 /usr/bin/conmon --api-version 1 -c 03e82c0f88fe4d69630b308f59f2e62bb23b19021a0de5ab0b267950c9367103 -u 03e82c0f88fe4d69630b308f59f2e62bb23b19021a0de5ab0b267950c9367103>

Nov 11 10:07:09 ip-10-2-40-72.us-west-2.compute.internal systemd[1]: Starting Custom Postgres Podman Container...
Nov 11 10:07:09 ip-10-2-40-72.us-west-2.compute.internal podman[71943]: Error: no container with name or ID "postgrespodman" found: no such container
Nov 11 10:07:09 ip-10-2-40-72.us-west-2.compute.internal systemd[1]: Started Custom Postgres Podman Container.
Nov 11 10:07:10 ip-10-2-40-72.us-west-2.compute.internal podman[71973]: PostgreSQL Database directory appears to contain a database; Skipping initialization
Nov 11 10:07:10 ip-10-2-40-72.us-west-2.compute.internal podman[71973]: 2021-11-11 10:07:10.428 UTC [1] LOG:  starting PostgreSQL 14.0 on x86_64-pc-linux-musl, compiled by gcc (Alpine 10>
Nov 11 10:07:10 ip-10-2-40-72.us-west-2.compute.internal podman[71973]: 2021-11-11 10:07:10.429 UTC [1] LOG:  listening on IPv4 address "0.0.0.0", port 5432
Nov 11 10:07:10 ip-10-2-40-72.us-west-2.compute.internal podman[71973]: 2021-11-11 10:07:10.429 UTC [1] LOG:  listening on IPv6 address "::", port 5432
Nov 11 10:07:10 ip-10-2-40-72.us-west-2.compute.internal podman[71973]: 2021-11-11 10:07:10.432 UTC [1] LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
Nov 11 10:07:10 ip-10-2-40-72.us-west-2.compute.internal podman[71973]: 2021-11-11 10:07:10.437 UTC [20] LOG:  database system was shut down at 2021-11-11 10:07:09 UTC
Nov 11 10:07:10 ip-10-2-40-72.us-west-2.compute.internal podman[71973]: 2021-11-11 10:07:10.440 UTC [1] LOG:  database system is ready to accept connections

Právě jsme nastavili vlastní systémovou službu založenou na kontejneru spravovaném přes Podman!

Závěr

V této příručce se nám podařilo prozkoumat, jak nainstalovat Podman na náš server Rocky Linux/Centos 8.


Cent OS
  1. Jak nainstalovat a nakonfigurovat docker v Rocky Linux/Centos 8

  2. Jak nainstalovat a nakonfigurovat Ansible na Rocky Linux/CentOS 8

  3. Jak nainstalovat Erlang na Rocky Linux/Alma Linux/CentOS 8

  1. Jak nainstalovat a používat php Composer v Rocky Linux/Centos 8

  2. Jak nainstalovat klienta FreeIPA na Rocky Linux/Alma Linux/CentOS 8

  3. Jak nainstalovat a nakonfigurovat Mono na Rocky Linux 8 a CentOS 8

  1. Jak nainstalovat Docker a Docker-Compose na Rocky Linux 8

  2. Jak nainstalovat a používat Podman ke spouštění kontejnerů na Rocky Linux 8

  3. Jak nainstalovat Docker na Rocky Linux 8 / CentOS 8 / RHEL 8 / AlmaLinux