Ricerca nel sito web

Guida introduttiva a Podman (alternativa Docker) su Rocky Linux


Questo tutorial esiste per queste versioni del sistema operativo

  • Rocky Linux 8.4
  • Rocky Linux 8.4

Su questa pagina

  1. Prerequisiti
  2. Installazione di Podman su Rocky Linux
  3. Configurazione importante Podman
  4. Imposta nuovo utente
  5. Usi di base di Podman
    1. Cerca immagini contenitore
    2. Gestisci le immagini del contenitore
    3. Esegui Container con Podman
    4. Controlla i log dei container con Podman
    5. Arresto del contenitore con Podman
    6. Imposta volume personalizzato con Podman
    7. SSH al contenitore in esecuzione
    8. Ripulisci l'ambiente

    Podman è uno strumento nativo di Linux per la distribuzione di applicazioni utilizzando container e immagini di container Open Container Initiative (OCI). Supporta più formati di immagine del contenitore, comprese le immagini Docker e le immagini del contenitore OCI. Inoltre, Podman supporta la gestione di pod, gruppi di contenitori.

    Podman è uno strumento senza demone, che funziona come una singola riga di comando binaria senza un servizio. Fornisce una riga di comando simile a Docker, puoi utilizzare un alias come alias docker=podman.

    Per eseguire i container e gestire le immagini dei container, Podman si affida ai runtime dei container libpod e OCI come runc, crun e runv.

    Prerequisiti

    In questa guida imparerai come installare Podman sul sistema Rocky Linux. Inoltre, imparerai l'utilizzo di base di Podman per la gestione dei contenitori e delle immagini dei contenitori.

    Prima di iniziare, assicurati di avere i seguenti requisiti:

    • Sistema operativo: Rocky Linux 8.4 (Ossidiana verde)
    • Privilegi di root: per l'installazione di nuovi pacchetti e la modifica della configurazione del sistema

    Ora iniziamo l'installazione di Podman.

    Installazione di Podman su Rocky Linux

    Per impostazione predefinita, il repository appstream di Rocky Linux fornisce i pacchetti podman.

    1. Eseguire il comando DNF di seguito per visualizzare le informazioni sul pacchetto podman.

    sudo dnf info podman

    Vedrai un output simile a quello di seguito.

    Last metadata expiration check: 0:07:09 ago on Tue 16 Nov 2021 09:30:27 AM UTC.
    Available Packages
    Name         : podman
    Version      : 3.3.1
    Release      : 9.module+el8.5.0+710+4c471e88
    Architecture : x86_64
    Size         : 12 M
    Source       : podman-3.3.1-9.module+el8.5.0+710+4c471e88.src.rpm
    Repository   : appstream
    Summary      : Manage Pods, Containers and Container Images
    URL          : https://podman.io/
    License      : ASL 2.0 and GPLv3+
    Description  : podman (Pod Manager) is a fully featured container engine that is a simple
                 : daemonless tool.  podman provides a Docker-CLI comparable command line that
                 : eases the transition from other container engines and allows the management of
                 : pods, containers and images.  Simply put: alias docker=podman.
                 : Most podman commands can be run as a regular user, without requiring
                 : additional privileges.
                 :
                 : podman uses Buildah(1) internally to create container images.
                 : Both tools share image (not container) storage, hence each can use or
                 : manipulate images (but not containers) created by the other.
                 :
                 : Manage Pods, Containers and Container Images
                 : podman Simple management tool for pods, containers and images

    Il repository appstream fornisce la versione del pacchetto Podman 3.3.1.

    2. Installa Podman utilizzando il comando DNF di seguito.

    sudo dnf install podman

    Digita y per confermare e premi Invio per continuare l'installazione.

    3. Se l'installazione di Podman viene completata, verificare utilizzando il seguente comando.

    podman version

    Vedrai un output simile a quello di seguito.

    Version:      3.3.1
    API Version:  3.3.1
    Go Version:   go1.16.7
    Built:        Wed Nov 10 01:48:06 2021
    OS/Arch:      linux/amd64

    Configurazione importante di Podman

    Il pacchetto Podman viene fornito con alcune configurazioni predefinite che si trovano nella directory /etc/containers.

    Di seguito sono riportate alcune configurazioni Podman che devi conoscere.

    • policy.json. Configurazione dei criteri per la firma dell'immagine.
    • registri.conf. Elenco dei registri delle immagini del contenitore disponibili come Docker Registry, registro delle immagini del contenitore RHEL e registro delle immagini del contenitore Fedora.
    • storage.conf. Configurazione dell'archiviazione predefinita per Podman. Include driver, posizione, ecc.
    • Directory registries.d/. Configurazione di registri aggiuntivi e firma dell'immagine
    • Directory registries.conf.d/. Configurazione aggiuntiva per gli alias delle immagini del contenitore.

    Imposta nuovo utente

    In questo passaggio, creerai un nuovo utente e verificherai l'installazione di Podman eseguendo l'immagine Docker hello-world.

    1. Eseguire il comando seguente per aggiungere un nuovo utente johndoe.

    useradd -m -s /bin/bash johndoe
    passwd johndoe

    Digita una nuova password sicura per l'utente johndoe.

    2. Successivamente, accedere come utente johndoe utilizzando il seguente comando.

    su - johndoe

    3. Ora esegui il seguente comando per eseguire un nuovo contenitore basato sull'immagine Docker hello-world.

    podman run hello-world

    Vedrai i messaggi di output Hello World, il che significa che il contenitore è in esecuzione ma ora è terminato.

    ? docker.io/library/hello-world:latest
    Trying to pull docker.io/library/hello-world:latest...
    Getting image source signatures
    Copying blob 2db29710123e done
    Copying config feb5d9fea6 done
    Writing manifest to image destination
    Storing signatures

    Hello from Docker!
    This message shows that your installation appears to be working correctly.

    To generate this message, Docker took the following steps:
     1. The Docker client contacted the Docker daemon.
     2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
        (amd64)
     3. The Docker daemon created a new container from that image which runs the executable that produces the output you are currently reading.
     4. The Docker daemon streamed that output to the Docker client, which sent it to your terminal.

    To try something more ambitious, you can run an Ubuntu container with:
     $ docker run -it ubuntu bash

    Share images, automate workflows, and more with a free Docker ID:
     https://hub.docker.com/

    For more examples and ideas, visit:
     https://docs.docker.com/get-started/

    4. Controlla lo stato dei contenitori sul tuo sistema utilizzando il comando Podman di seguito

    podman ps -a

    Vedrai il contenitore basato sull'immagine Docker hello-world con lo stato corrente Exited.

    CONTAINER ID  IMAGE                                 COMMAND     CREATED        STATUS                    PORTS       NAMES
    cea9bbfeac4d  docker.io/library/hello-world:latest  /hello      6 minutes ago  Exited (0) 6 minutes ago              recursing_shaw

    Usi di base di Podman

    In questo passaggio imparerai l'utilizzo di base di Podman per la gestione dei contenitori e delle immagini dei contenitori.

    Cerca immagini contenitore

    1. Per trovare le immagini del contenitore utilizzando Podman, utilizzare il seguente comando. In questo esempio, stiamo cercando immagini contenitore con il nome nginx.

    podman search nginx

    Vedrai molte immagini di container dai registri multipli.

    2. È possibile limitare i risultati della ricerca da ciascun registro immagini contenitore utilizzando l'opzione --limit n.

    podman search nginx --limit 3

    Ora vedrai ogni registro con 3 risultati di immagini contenitore con il nome nginx.

    INDEX              NAME                                                DESCRIPTION                                      STARS       OFFICIAL    AUTOMATED
    fedoraproject.org  registry.fedoraproject.org/f29/nginx                                                                 0
    fedoraproject.org  registry.fedoraproject.org/f29/origin-nginx-router                                                   0
    redhat.com         registry.access.redhat.com/ubi8/nginx-120           Platform for running nginx 1.20 or building ...  0
    redhat.com         registry.access.redhat.com/ubi8/nginx-118           Platform for running nginx 1.18 or building ...  0
    redhat.com         registry.access.redhat.com/rhscl/nginx-18-rhel7     Nginx 1.8 server and a reverse proxy server      0
    centos.org         registry.centos.org/bamachrn/nginx-header                                                            0
    centos.org         registry.centos.org/centos/nginx                                                                     0
    centos.org         registry.centos.org/centos/nginx-110-centos7                                                         0
    docker.io          docker.io/library/nginx                             Official build of Nginx.                         15839       [OK]
    docker.io          docker.io/jwilder/nginx-proxy                       Automated Nginx reverse proxy for docker con...  2096                    [OK]
    docker.io          docker.io/nginxinc/nginx-unprivileged               Unprivileged NGINX Dockerfiles                   54

    Gestisci le immagini del contenitore

    Podman supporta il formato di immagini OCI e Docker. In questa fase, gestirai le immagini del contenitore con Podman.

    1. Scarica l'immagine del contenitore nginx:alpine utilizzando il seguente comando.

    podman pull nginx:alpine

    Seleziona il registro contenitori che desideri utilizzare, quindi premi Invio per confermare. Per questo esempio, utilizzeremo il registro Docker.

    ? Please select an image:
        registry.fedoraproject.org/nginx:alpine
        registry.access.redhat.com/nginx:alpine
        registry.centos.org/nginx:alpine
      ? docker.io/library/nginx:alpine

    Inizierà il processo di download.

    ? docker.io/library/nginx:alpine
    Trying to pull docker.io/library/nginx:alpine...
    Getting image source signatures
    Copying blob a4e156412037 done
    Copying blob a2402c2da473 done
    Copying blob e0bae2ade5ec done
    Copying blob 97518928ae5f done
    Copying blob 3f3577460f48 done
    Copying blob e362c27513c3 done
    Copying config b46db85084 done
    Writing manifest to image destination
    Storing signatures
    b46db85084b80a87b94cc930a74105b74763d0175e14f5913ea5b07c312870f8

    2. Se il processo di download dell'immagine del contenitore viene completato, verificare le immagini del downloader utilizzando il seguente comando.

    podman images

    Di seguito è riportato l'output simile che otterrai.

    REPOSITORY                     TAG         IMAGE ID      CREATED      SIZE
    docker.io/library/nginx        alpine      b46db85084b8  3 days ago   24.7 MB
    docker.io/library/hello-world  latest      feb5d9fea6a5  7 weeks ago  19.9 kB

    Esegui Container con Podman

    Dopo aver scaricato l'immagine del contenitore nginx:alpine, imparerai come eseguire un nuovo contenitore utilizzando Podman.

    1. Esegui il seguente comando per eseguire il contenitore basato sull'immagine nginx:alpine.

    podman run -it --rm -d -p 8080:80 --name web nginx:alpine

    Otterrai la stringa casuale e il numero del contenitore.

    2. Verificare il contenitore in esecuzione sul sistema utilizzando il seguente comando.

    podman ps

    Vedrai un output simile a quello di seguito.

    Il nome del contenitore web è Up ed espone la porta 8080 sulla macchina host.

    3. Ora apri il tuo browser web e digita l'indirizzo IP di Rocky Linux sulla barra degli indirizzi. Per questo esempio, la macchina Rocky Linux ha l'indirizzo IP 192.168.1.10.

    http://192.168.1.10:8080/

    Vedrai il file index.html predefinito dal contenitore web, che si basa sull'immagine del contenitore nginx:alpine.

    Controlla i log dei container con Podman

    Ora imparerai il comando Podman per controllare i log dei container usando l'opzione logs.

    1. Per controllare i log del contenitore, puoi utilizzare il comando Podman di seguito.

    podman logs web

    Vedrai i log dettagliati del contenitore web.

    2. Per limitare l'output dei log del contenitore, utilizzare l'opzione --tail n.

    podman logs --tail 10 web

    Di seguito è riportato l'output di log simile del contenitore web.

    Arresto del contenitore con Podman

    1. Per arrestare il web del contenitore, utilizzare il comando Podman di seguito.

    podman stop web

    Ora il contenitore web verrà arrestato.

    2. Verificare utilizzando il seguente comando.

    podman ps
    podman ps -a

    Vedrai che il web contenitore viene eliminato automaticamente perché stai utilizzando l'opzione --rm quando esegui il contenitore.

    Imposta il volume personalizzato con Podman

    In questo passaggio imparerai come gestire i volumi con il Podman.

    1. Creare nuovi dati di directory e il file personalizzato index.html. Questo sostituirà il file Nginx index.html predefinito nel contenitore Nginx.

    mkdir -p ~/data/
    nano ~/data/inde.html

    Copia e incolla il seguente script HTML.

    <!doctype html>
    <html lang="en">
    <head>
      <meta charset="utf-8">
      <title>Welcome to Container Nginx</title>
    </head>
    <body>
      <h2>Hello from Nginx container - Managed with Podman</h2>
    </body>
    </html>

    Salva lo script ed esci.

    2. Successivamente, eseguire il seguente comando per creare un nuovo contenitore con volume personalizzato.

    podman run -it --rm -d -p 8080:80 --name web -v ~/data:/usr/share/nginx/html nginx:alpine

    Usa l'opzione -v data:/usr/share/nginx/html per configurare il volume personalizzato per il tuo nuovo contenitore. La directory data verrà montata nella directory del contenitore /usr/share/nginx/html.

    3. Controllare i contenitori in esecuzione utilizzando il comando Podman di seguito.

    podman ps

    I nuovi nomi dei contenitori web sono Up con il volume personalizzato.

    4. Apri il tuo browser web e digita l'indirizzo IP del server con la porta 8080.

    http://192.168.1.10:8080/

    Ora vedrai la pagina index.html personalizzata come di seguito.

    SSH al contenitore in esecuzione

    In questo passaggio, accederai alla shell del contenitore in esecuzione.

    1. Per accedere al contenitore in esecuzione, utilizzare Podman con l'opzione exec come di seguito.

    podman exec -it web /bin/sh

    2. Dopo aver effettuato l'accesso al contenitore, controllare il nome host del contenitore, l'indirizzo IP e la tabella di routing.

    hostname

    ip a
    route -n

    Ora digita exit e premi Invio per uscire dal contenitore.

    Pulisci l'ambiente

    Nell'ultimo passaggio, ripulirai il tuo ambiente.

    1. Arresta il contenitore web utilizzando il seguente comando.

    podman stop web

    2. Successivamente, rimuovi tutti i contenitori con lo stato Uscito utilizzando il comando podman di seguito.

    podman rm $(podman ps --filter "status=exited" -q)

    Ora hai completato l'utilizzo di base di Podman per la gestione dei contenitori e delle immagini dei contenitori.

    Conclusione

    Congratulazioni! Hai installato correttamente Podman sul sistema Rocky Linux. Inoltre, hai appreso l'utilizzo di base di Podman per la gestione dei contenitori e delle immagini dei contenitori.

    Per il passaggio successivo, potresti essere interessato a creare immagini container personalizzate basate sul formato dell'immagine Docker o sulla specifica dell'immagine del container OCI.