GNU/Linux >> Linux Esercitazione >  >> Rocky Linux

Come installare e utilizzare Podman per eseguire container su Rocky Linux 8

Podman è una piattaforma container gratuita e open source creata per sviluppare, gestire e distribuire container e pod in ambiente Linux. Redhat ha sviluppato Podman nel 2018. È un motore di containerizzazione che funziona in modo diverso rispetto a Docker. Podman non dipende da un demone per funzionare, a differenza di Docker che utilizza Docker CLI e Docker daemon. Essere dipendenti dal demone porta a un singolo punto di errore.

Podman è progettato secondo gli standard OCI (Open Container Initiative) che consentono a Podman di interagire direttamente con il kernel, i container e le immagini. È anche più sicuro di Docker in quanto non richiede l'accesso come root. Podman può essere utilizzato come sostituto di Docker poiché entrambi sono conformi a OCI.

Questo articolo ti mostrerà come installare Podman e usarlo per creare e gestire immagini e contenitori.

Prerequisiti

  1. Un server basato su Rocky Linux

  2. Un utente non sudo con privilegi di root.

  3. Assicurati che il server sia aggiornato.

    $ sudo dnf update
    

Installa Podman

Podman è incluso negli container-tools modulo, insieme a Buildah e Skopeo. È anche disponibile nel repository AppStream per Rocky Linux 8. Utilizzeremo il metodo del modulo.

Installa Podman usando il dnf module comando.

$ sudo dnf module install container-tools

Controlla la versione di Podman per vedere se è installata correttamente.

$ podman --version
podman version 3.2.3

Cerca e scarica immagini container

Per cercare l'immagine di Nginx, usa il comando seguente.

$ podman search nginx

Nell'output, vedrai il nome del registro da cui proviene l'immagine e una descrizione delle immagini.

Per scaricare l'immagine, usa uno dei seguenti comandi.

$ podman pull docker.io/library/nginx

OR

$ podman pull nginx

Puoi visualizzare le immagini scaricate tramite il seguente comando.

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

Esegui contenitori

Utilizzare il comando seguente per eseguire un contenitore utilizzando l'immagine Nginx. Abbiamo chiamato il contenitore come server web .

$ podman run -d --name webserver nginx 

Possiamo usare la stessa immagine per lanciare un altro container con un nome diverso.

$ podman run -d --name webserver2 nginx

Possiamo lanciare un numero illimitato di container utilizzando la stessa immagine.

Elenca e blocca i contenitori

Per elencare tutti i container in esecuzione, usa il comando seguente.

$ 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

Arresta il contenitore in esecuzione.

$ podman stop webserver
webserver

Verifica se si è fermato.

$ 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

Per elencare tutti i contenitori, inclusi quelli fermi, devi usare -a bandiera.

$ 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

Avvia un container fermo

Utilizzare il comando seguente per avviare un container interrotto.

$ podman start webserver
webserver

Verifica se è stato avviato.

$ 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

Elimina contenitore

Devi fermare un contenitore prima di eliminarlo.

$ podman stop webserver2

Elimina il contenitore.

$ podman rm webserver2

Puoi eliminare un container in esecuzione utilizzando --force bandiera.

$ podman rm webserver2 --force
35a286ba5a553d5f88e3d9795780f893cfb58bf4a126c4912d1ec56b9d0e5a27

Kill Container

Fermare e uccidere un container sono due cose diverse che alla fine ottengono la stessa cosa. La differenza è che l'arresto di un contenitore lo chiude con grazia mentre l'uccisione di un contenitore lo termina forzatamente, con conseguente perdita di dati.

Usa il comando seguente per terminare il contenitore.

$ podman kill -s 9 webserver2

Il comando precedente utilizza il SIGNAL 9 (SIGKILL) opzione per uccidere il contenitore.

Per eliminare tutti i contenitori, usa --all o -a flag e per uccidere solo l'ultimo contenitore, usa --latest o -l bandiera.

Elimina immagine

Puoi eliminare le immagini usando il rmi comando.

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

Puoi eliminare più immagini separandole utilizzando le virgole.

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

Per rimuovere tutte le immagini sul tuo sistema, usa il -a bandiera.

$ podman rmi -a

Visualizza registri contenitore

Per visualizzare i registri del contenitore, utilizzare il comando seguente.

$ 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
......

Puoi limitare i log alle ultime 5 righe usando il --tail opzione.

$ 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

Per impostazione predefinita, non otterrai alcun timestamp sui registri. Usa il -t flag per aggiungere timestamp ai tuoi log.

$ 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
.....

Ispezione dei contenitori

L'ispezione di un contenitore stamperà le informazioni su un contenitore.

$ 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,
....

Il comando predefinito stamperà un output lungo in formato JSON. Per filtrare l'output, devi utilizzare il --format opzione. Per scoprire quando è stato avviato il container, esegui il comando seguente.

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

Accesso alla shell del contenitore

Puoi accedere al prompt della shell di qualsiasi contenitore usando exec opzione.

$ podman exec -it webserver2 /bin/bash

baccelli

Podman ha una caratteristica unica che manca a Docker. Podman può creare Pod da contenitori che operano insieme. Ciò ti consente di gestire più contenitori in modo aggregato.

Per creare un Pod, utilizza il seguente comando.

$ podman pod create --name mypod

Aggiungi i Contenitori al pod appena creato.

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

Ora puoi gestire i contenitori utilizzando semplici comandi a una riga.

$ 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

Conclusione

Questo conclude il nostro tutorial sull'installazione e l'utilizzo di Podman per eseguire Containers. Ci sono molte cose che puoi fare con Podman che non abbiamo trattato. Se hai domande, pubblicale nei commenti qui sotto.


Rocky Linux
  1. Come installare Docker e Docker-Compose su Rocky Linux 8

  2. Che cos'è Podman e come installare Podman in Linux

  3. Come installare e utilizzare Podman in Rocky Linux/Alma Linux/Centos 8

  4. Come installare e configurare Elasticsearch su Rocky Linux 8

  5. Come installare e configurare Docker Container su Rocky Linux 8

Come installare Podman su Rocky Linux 8 / AlmaLinux per eseguire Containers

Come installare e utilizzare FFmpeg in Rocky Linux 8

Come installare e configurare OpenCV su Rocky Linux 8.4

Come installare Podman su Rocky Linux 8

Come installare Docker su Rocky Linux e AlmaLinux

Come installare MongoDB su Rocky Linux e AlmaLinux