GNU/Linux >> Znalost Linux >  >> Rocky Linux

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

Podman je bezplatná kontejnerová platforma s otevřeným zdrojovým kódem vytvořená pro vývoj, správu a nasazení kontejnerů a modulů v prostředí Linuxu. Redhat vyvinul Podman v roce 2018. Jde o kontejnerizační engine, který funguje jinak než Docker. Podman není závislý na démonovi, aby fungoval, na rozdíl od Dockeru, který používá Docker CLI a Docker daemon. Být závislý na démonovi vede k jedinému bodu selhání.

Podman je navržen podle standardů OCI (Open Container Initiative), které umožňují Podmanovi přímo interagovat s jádrem, kontejnery a obrázky. Je také bezpečnější než Docker, protože nevyžaduje přístup root. Podman lze použít jako náhradu za Docker, protože oba jsou kompatibilní s OCI.

Tento článek vám ukáže, jak nainstalovat Podman a používat jej k vytváření a správě obrázků a kontejnerů.

Předpoklady

  1. Server Rocky Linux

  2. Uživatel bez sudo s právy root.

  3. Ujistěte se, že je server aktualizován.

    $ sudo dnf update
    

Nainstalovat Podman

Podman je součástí container-tools modul, spolu s Buildah a Skopeo. Je také k dispozici v úložišti AppStream pro Rocky Linux 8. Budeme používat metodu modulu.

Nainstalujte Podman pomocí dnf module příkaz.

$ sudo dnf module install container-tools

Zkontrolujte verzi Podman, zda je správně nainstalována.

$ podman --version
podman version 3.2.3

Vyhledat a stáhnout obrázky kontejnerů

Chcete-li vyhledat obrázek Nginx, použijte následující příkaz.

$ podman search nginx

Ve výstupu uvidíte název registru, ze kterého obrázek pochází, a popis obrázků.

Ke stažení obrázku použijte jeden z následujících příkazů.

$ podman pull docker.io/library/nginx

OR

$ podman pull nginx

Stažené obrázky si můžete prohlédnout pomocí následujícího příkazu.

$ podman images
REPOSITORY               TAG         IMAGE ID      CREATED     SIZE
docker.io/library/nginx  latest      f8f4ffc8092c  3 days ago  138 MB

Spustit kontejnery

Pomocí následujícího příkazu spusťte kontejner pomocí obrazu Nginx. Kontejner jsme pojmenovali jako webový server .

$ podman run -d --name webserver nginx 

Můžeme použít stejný obrázek ke spuštění dalšího kontejneru s jiným názvem.

$ podman run -d --name webserver2 nginx

Můžeme spustit neomezený počet kontejnerů pomocí stejného obrázku.

Vypsat a zastavit kontejnery

Chcete-li zobrazit seznam všech běžících kontejnerů, použijte následující příkaz.

$ podman ps
CONTAINER ID  IMAGE                           COMMAND               CREATED         STATUS             PORTS       NAMES
19b6668bc627  docker.io/library/nginx:latest  nginx -g daemon o...  31 seconds ago  Up 31 seconds ago              webserver
35a286ba5a55  docker.io/library/nginx:latest  nginx -g daemon o...  2 seconds ago   Up 3 seconds ago               webserver2

Zastavte běžící kontejner.

$ podman stop webserver
webserver

Ověřte, zda se zastavil.

$ podman ps
CONTAINER ID  IMAGE                           COMMAND               CREATED             STATUS                 PORTS       NAMES
35a286ba5a55  docker.io/library/nginx:latest  nginx -g daemon o...  About a minute ago  Up About a minute ago              webserver2

Chcete-li vypsat všechny kontejnery, včetně zastavených, musíte použít -a vlajka.

$ podman ps -a
CONTAINER ID  IMAGE                           COMMAND               CREATED             STATUS                     PORTS       NAMES
19b6668bc627  docker.io/library/nginx:latest  nginx -g daemon o...  2 minutes ago       Exited (0) 35 seconds ago              webserver
35a286ba5a55  docker.io/library/nginx:latest  nginx -g daemon o...  About a minute ago  Up About a minute ago                  webserver2

Spuštění zastaveného kontejneru

Ke spuštění zastaveného kontejneru použijte následující příkaz.

$ podman start webserver
webserver

Ověřte, zda se spustilo.

$ podman ps
CONTAINER ID  IMAGE                           COMMAND               CREATED        STATUS             PORTS       NAMES
19b6668bc627  docker.io/library/nginx:latest  nginx -g daemon o...  3 minutes ago  Up 16 seconds ago              webserver
35a286ba5a55  docker.io/library/nginx:latest  nginx -g daemon o...  2 minutes ago  Up 2 minutes ago               webserver2

Smazat kontejner

Než kontejner smažete, musíte jej zastavit.

$ podman stop webserver2

Smažte kontejner.

$ podman rm webserver2

Spuštěný kontejner můžete odstranit pomocí --force vlajka.

$ podman rm webserver2 --force
35a286ba5a553d5f88e3d9795780f893cfb58bf4a126c4912d1ec56b9d0e5a27

Zabít kontejner

Zastavení a zabití kontejneru jsou dvě různé věci, které nakonec dosáhnou stejné věci. Rozdíl je v tom, že zastavení kontejneru jej elegantně vypne, zatímco zabití kontejneru jej násilně ukončí, což má za následek ztrátu dat.

K ukončení kontejneru použijte následující příkaz.

$ podman kill -s 9 webserver2

Výše uvedený příkaz používá SIGNAL 9 (SIGKILL) možnost zabít kontejner.

Chcete-li zabít všechny kontejnery, použijte --all nebo -a příznak a chcete-li zabít pouze nejnovější kontejner, použijte --latest nebo -l vlajka.

Smazat obrázek

Obrázky můžete smazat pomocí rmi příkaz.

$ podman rmi registry.redhat.io/rhel8/rsyslog

Více obrázků můžete smazat tak, že je oddělíte čárkami.

$ podman rmi registry.redhat.io/rhel8/rsyslog registry.redhat.io/ubi8/ubi

Chcete-li odstranit všechny obrázky ve vašem systému, použijte -a vlajka.

$ podman rmi -a

Zobrazit protokoly kontejneru

Chcete-li zobrazit protokoly kontejneru, použijte následující příkaz.

$ podman logs webserver
/docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
/docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
/docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
10-listen-on-ipv6-by-default.sh: info: Getting the checksum of /etc/nginx/conf.d/default.conf
10-listen-on-ipv6-by-default.sh: info: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf
/docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh
/docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh
/docker-entrypoint.sh: Configuration complete; ready for start up
......

Záznamy můžete omezit na posledních 5 řádků pomocí --tail možnost.

$ podman logs --tail=5 webserver
2021/10/05 10:13:52 [notice] 1#1: built by gcc 8.3.0 (Debian 8.3.0-6)
2021/10/05 10:13:52 [notice] 1#1: OS: Linux 4.18.0-305.19.1.el8_4.x86_64
2021/10/05 10:13:52 [notice] 1#1: getrlimit(RLIMIT_NOFILE): 262144:262144
2021/10/05 10:13:52 [notice] 1#1: start worker processes
2021/10/05 10:13:52 [notice] 1#1: start worker process 23

Ve výchozím nastavení nebudete mít v protokolech žádná časová razítka. Použijte -t příznak pro přidání časových razítek do vašich protokolů.

$ podman logs -t webserver
2021-10-05T09:25:02.026967459Z /docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
2021-10-05T09:25:02.026967459Z /docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
2021-10-05T09:25:02.033956297Z /docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
2021-10-05T09:25:02.043751152Z 10-listen-on-ipv6-by-default.sh: info: Getting the checksum of /etc/nginx/conf.d/default.conf
2021-10-05T09:25:02.064561317Z 10-listen-on-ipv6-by-default.sh: info: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf
.....

Kontrola kontejnerů

Kontrola kontejneru vytiskne informace o kontejneru.

$ podman inspect webserver
[
    {
        "Id": "19b6668bc6278a66b3ffc98ae1515af25f5bebcd20bf26de803cae41c4485f59",
        "Created": "2021-10-05T09:25:01.784949744Z",
        "Path": "/docker-entrypoint.sh",
        "Args": [
            "nginx",
            "-g",
            "daemon off;"
        ],
        "State": {
            "OciVersion": "1.0.2-dev",
            "Status": "running",
            "Running": true,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 4423,
....

Výchozí příkaz vytiskne dlouhý výstup ve formátu JSON. Chcete-li filtrovat výstup, musíte použít --format volba. Chcete-li zjistit, kdy byl kontejner spuštěn, spusťte následující příkaz.

$ podman inspect webserver --format '{{.State.StartedAt}}'
2021-10-05 10:13:52.794806322 +0000 UTC

Přístup k shellu kontejneru

K výzvě Shell libovolného kontejneru se dostanete pomocí exec možnost.

$ podman exec -it webserver2 /bin/bash

Pody

Podman má unikátní funkci, kterou Docker postrádá. Podman může vytvářet lusky z kontejnerů, které fungují společně. To vám umožní spravovat více kontejnerů dohromady.

K vytvoření podu použijte následující příkaz.

$ podman pod create --name mypod

Přidejte kontejnery do nově vytvořeného pod.

$ podman run --pod mypod --name myimage1 image:latest
$ podman run --pod mypod --name myimage2 diff-image:latest

Nyní můžete spravovat kontejnery pomocí jednoduchých jednořádkových příkazů.

$ podman kill mypod      # Kill all containers
$ podman restart mypod   # Restart all containers
$ podman stop mypod      # Stop all containers
$ podman pod ps			# List all pods
$ podman pod top mypod   # Display running processes in a pod
$ podman pod inspect mypod # Inspect a Pod
$ podman pod rm mypod    # Remove the pod

Závěr

Tímto končí náš tutoriál o instalaci a používání aplikace Podman ke spouštění kontejnerů. S Podmanem můžete dělat spoustu věcí, které jsme neprobrali. Pokud máte nějaké dotazy, napište je do komentářů níže.


Rocky Linux
  1. Co je Podman a jak nainstalovat Podman v Linuxu

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

  3. Jak nainstalovat a nakonfigurovat Elasticsearch na Rocky Linux 8

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

  2. Jak nainstalovat a nakonfigurovat HAProxy na Rocky Linux 8

  3. Jak nainstalovat a nastavit Docker Container na Rocky Linux 8

  1. Jak nainstalovat a používat PostgreSQL 13 na Rocky Linux

  2. Jak nainstalovat a používat MongoDB na Rocky Linux 8

  3. Jak nainstalovat a používat pgAdmin 4 na Rocky Linux 8