Ricerca nel sito web

Guida introduttiva a Podman: gestione di immagini, contenitori e volumi


Su questa pagina

  1. 1. Comando Podman di base
  2. 2. Gestisci le immagini del contenitore utilizzando Podman
  3. 3. Gestisci contenitori
  4. 4. Gestisci volume
  5. 5. Crea immagini personalizzate con Commit
  6. 6. Crea immagini personalizzate con Dockerfile

Podman è un runtime di container che fornisce funzionalità simili a Docker. Fa parte della libreria libpod e può essere utilizzato per gestire pod, contenitori, immagini di contenitori e volumi di contenitori. Podman era molto diverso da Docker che utilizza l'architettura client-server e richiedeva un demone docker per essere eseguito, mentre Podman non richiede alcun demone per l'esecuzione e può anche essere eseguito senza problemi senza privilegi di root.

In questo tutorial, ti mostreremo l'utilizzo di base di Podman per la gestione di contenitori, immagini e volumi e la creazione di immagini di contenitori. Per completare questa guida, devi aver installato podman. ecco le guide per diversi sistemi operativi:

  • Come installare Podman su Ubuntu 22.04
  • Introduzione a Podman (alternativa Docker) su Rocky Linux
  • Come installare e utilizzare Podman (alternativa Docker) su Ubuntu 20.04
  • Come installare Podman come alternativa a Docker su Debian 11

Prerequisiti

  • Server Ubuntu con Podman installato
  • La conoscenza di base di Docker renderà più semplice

1. Comando Podman di base

Dopo aver installato Podman sul sistema Ubuntu, dobbiamo sapere come controllare Podman stesso. Dobbiamo verificare la versione già installata sul sistema, l'ambiente di sistema Podman e l'utilizzo della guida di base.

Per ottenere la versione installata di Podman sulla macchina, utilizzare il seguente comando.

podman version

Qualsiasi versione di Podman > 1.0.1 andrà bene per questa guida.

Ora controlla la configurazione dell'ambiente Podman.

podman info

E ti verrà visualizzato l'ambiente di sistema dell'installazione di Podman. Comprese le informazioni sui pacchetti host, i registri e l'archiviazione.

Quindi, esegui il seguente comando per mostrare tutte le opzioni di comando Podman disponibili.

podman --help

Per visualizzare la guida per il comando specifico, è possibile utilizzare come di seguito.

podman pod help

2. Gestisci le immagini del contenitore utilizzando Podman

Ora stiamo passando alla gestione delle immagini del contenitore con Podman. Esistono alcuni comandi di base che è necessario conoscere relativi alla gestione delle immagini del contenitore, tra cui la ricerca di immagini, il download di immagini, la visualizzazione delle immagini disponibili sul sistema locale e la rimozione delle immagini.

Eseguire il comando seguente per cercare un'immagine.

podman search nginx

Il comando cercherà le immagini che contengono la parola nginx su tutti i repository disponibili che sono già definiti nel file di configurazione /etc/containers/repositories.conf.

Ora scarica alcune immagini usando i comandi pull di podman qui sotto.

podman pull docker.io/library/nginx
podman pull docker.io/library/alpine

Una volta completato, controlla tutte le immagini disponibili sulla macchina server.

podman images

Ora otterrai le immagini nginx e alpine sul sistema.

Per rimuovere l'immagine alpina, puoi utilizzare l'opzione rmi come di seguito.

podman rmi alpine

Di conseguenza, avrai solo l'immagine del contenitore nginx sul sistema.

3. Gestisci i contenitori

In questa fase, abbiamo imparato a conoscere la gestione delle immagini del contenitore. E il prossimo passo, impareremo come creare e gestire i contenitori con Podman.

Per creare un nuovo contenitore, possiamo usare il comando podman run come di seguito.

podman run -d -p 8000:80 --name hakase-nginx docker.io/library/nginx

Il comando creerà un nuovo contenitore denominato hakase-nginx basato sull'immagine nginx ed esporrà la porta 8000 sul computer host.

Opzioni comando dettagli:

-d - mantiene il contenitore in esecuzione in background e come risultato stampa semplicemente l'ID del contenitore.
-p 8000:80 - mappatura delle porte per il contenitore e il sistema host. Porta 8000 sulla macchina host e porta 80 sul contenitore.
--name hakase-nginx - specifica il nome del contenitore con hakase-nginx.

Ora visualizza tutti i contenitori in esecuzione sul sistema.

podman ps

E ti verrà mostrato che il contenitore chiamato hakase-nginx è attivo e funzionante.

Se vuoi controllare tutti i contenitori disponibili, puoi usare l'opzione -a.

podman ps -a

Ora otterrai tutti i contenitori disponibili con stati diversi.

Dopo aver ottenuto tutti i contenitori in esecuzione sul computer host, ti mostreremo come controllare tutti i processi all'interno del contenitore, collegarlo al contenitore in esecuzione e arrestare e rimuovere il contenitore.

Per controllare il processo all'interno del contenitore in esecuzione utilizzando il seguente comando.

podman top hakase-nginx

Ora per collegare e accedere al contenitore in esecuzione, puoi utilizzare il comando exec come di seguito.

podman exec -it hakase-nginx /bin/bash

All'interno del contenitore hakase-nginx, controlla la versione di nginx su di esso.

nginx -V

Otterrai il risultato come di seguito.

Ora digita exit per disconnettersi dal contenitore.

Successivamente, arresta il contenitore hakase-nginx.

podman stop hakase-nginx

Quindi rimuovere il contenitore.

podman rm hakase-nginx

Se vuoi forzare l'arresto e rimuovere il contenitore in esecuzione, puoi usare -f force per l'opzione.

podman rm hakase-nginx -f

4. Gestisci volume

Dalla versione 0.12 Podman supporta la creazione e la gestione di volumi solo locali. Quindi, se stai usando la versione precedente, non otterrai questo comando volume podman.

Ora crea un nuovo volume locale usando il seguente comando.

podman volume create hakase-volume

Successivamente, visualizza tutti i volumi disponibili sul sistema.

podman volume ls

E otterrai il volume hakase nell'elenco.

Per controllare i dettagli sul volume hakase-volume, possiamo utilizzare l'opzione inspect come di seguito.

podman volume inspect hakase-volume

E vedrai che il mountPoint del volume è nella directory locale /var/lib/containers/storage/hakase-volume/_data.

Vai a quella directory e crea un nuovo file index.html.

cd /var/lib/containers/storage/hakase-volume/_data
echo "<h1><center>This is custom index and volume - Hello Podman</center></h1>" > index.html

Ora crea un nuovo contenitore e monta il volume hakase nel contenitore.

podman run -d -p 8000:80 -v hakase-volume:/usr/share/nginx/html --name hakase-nginx docker.io/library/nginx

Una volta creato il contenitore, controlla i volumi disponibili nel contenitore utilizzando il seguente comando.

podman inspect -f '{{ json .Mounts }}' hakase-nginx | jq

Nella parte inferiore del risultato, otterrai il volume hakase sul contenitore.

Successivamente, controlla l'indirizzo IP del contenitore.

podman inspect -f '{{ .NetworkSettings.IPAddress }}' hakase-nginx

Accedi al contenitore sulla porta HTTP utilizzando httpie.

http http://10.88.0.4/

E otterrai il file index.html personalizzato che è stato creato sul volume hakase.

Ora se vuoi rimuovere il volume, puoi usare l'opzione rm.

podman volume rm hakase-volume

E il volume hakase verrà rimosso.

5. Crea immagini personalizzate con Commit

Ora creeremo immagini container personalizzate utilizzando Podman. Fondamentalmente, Podman ti consente di creare immagini personalizzate basate sul contenitore modificato o creare nuove immagini personalizzate utilizzando il Dockerfile.

In questa sezione, creeremo nuove immagini personalizzate basate sul contenitore modificato tramite il comando podman commit.

Scarica/tira l'immagine principale ubuntu.

podman pull docker.io/library/ubuntu

Ora esegui il contenitore basato su Ubuntu immagine. E all'interno del contenitore, esegui il comando bash che aggiornerà i repository e installerà il pacchetto nginx.

podman run --name container-temp ubuntu bash -c "apt update && apt install -y nginx"

Attendere l'installazione di nginx all'interno del contenitore.

Una volta completato, crea una nuova immagine personalizzata basata su container-temp usando il seguente comando.

podman commit container-temp my-nginx

Successivamente, controlla le immagini disponibili sul sistema.

podman images

E otterrai una nuova immagine chiamata my-nginx nell'elenco.

Se desideri eseguire il contenitore in base all'immagine my-nginx, esegui il comando seguente.

podman run -dt -p 8001:80 --name nginx01 my-nginx /usr/sbin/nginx -g 'daemon off;'

Ora controlla il contenitore in esecuzione e controlla il suo indirizzo IP.

podman ps
podman inspect --format '{{ .NetworkSettings.IPAddress }}' nginx01

E ti verrà mostrato che il contenitore nginx01 è attivo e funzionante. Successivamente, accedi alla porta HTTP sul contenitore nginx01.

http -p h 10.88.0.19

di conseguenza, otterrai la risposta dell'intestazione HTTP come di seguito.

6. Crea immagini personalizzate con Dockerfile

Ora creeremo una nuova immagine del contenitore personalizzata utilizzando il Dockerfile.

Crea una nuova directory di progetto e crea un nuovo Dockerfile all'interno.

mkdir project; cd project/
vim Dockerfile

Incolla la seguente configurazione.

FROM ubuntu

# Install Nginx
RUN \
  apt-get update && \
  apt-get install -y nginx && \
  rm -rf /var/lib/apt/lists/* && \
  echo "\ndaemon off;" >> /etc/nginx/nginx.conf && \
chown -R www-data:www-data /var/lib/nginx

# Define mountable directories.
VOLUME ["/etc/nginx/sites-enabled", "/etc/nginx/certs", "/etc/nginx/conf.d", "/var/log/nginx", "/var/www/html"]

# Define the working directory.
WORKDIR /etc/nginx

# Define default command.
CMD ["nginx"]

# Expose ports.
EXPOSE 80
EXPOSE 443

Salva e chiudi.

Ora esegui il podman qui sotto per creare una nuova immagine personalizzata usando il Dockerfile.

podman build -t hakase-image .

Una volta completato, controlla la nuova immagine sulla macchina.

podman images

E otterrai l'immagine hakase.

Successivamente, crea un nuovo contenitore basato su hakase-image eseguendo il seguente comando.

podman run -d -p 8002:80 --name nginx02 hakase-image

Successivamente, controlla il contenitore nginx02 e il suo indirizzo IP.

podman ps
podman inspect --format '{{ .NetworkSettings.IPAddress }}' nginx02

Assicurati che il contenitore nginx02 sia attivo e funzionante.

Ora controlla il contenitore usando lo strumento httpie.

http 10.88.0.21

E ti verrà mostrata la pagina Nginx predefinita e la sua intestazione HTTP.

Finalmente, ora puoi gestire contenitori, immagini e volume utilizzando Podman. E puoi creare nuove immagini personalizzate per la tua applicazione utilizzando il Dockerfile.