Guida alle tecnologie

Installare e usare Podman su Debian 11

5 min read DevOps Aggiornato 22 Oct 2025
Installare e usare Podman su Debian 11
Installare e usare Podman su Debian 11

Illustrazione del logo Podman su sfondo neutro

Podman (il POD MANager) è un motore di container compatibile OCI, sviluppato da Red Hat come sostituto drop-in di Docker. Si utilizza per gestire e avviare container, immagini e volumi tramite riga di comando. Docker e Podman sono software simili. La differenza principale è che Podman non richiede un demone per eseguire i container, mentre Docker necessita del demone Docker Engine. Podman usa la libreria libpod per gestire l’intero ecosistema dei container.

In questo tutorial mostriamo come installare e usare Podman su Debian 11.

Prerequisiti

  • Un server con Debian 11.
  • Una password root configurata sul server.

Installare Podman

Il pacchetto Podman è incluso nel repository predefinito di Debian 11. Puoi installarlo eseguendo questo comando:

apt-get install podman -y

Una volta installato, verifica la versione di Podman con:

podman --version

Dovresti vedere un output simile:

podman version 3.0.1

Per ottenere informazioni dettagliate su Podman usa:

podman info

Esempio di output di informazioni (troncato):

host:
  arch: amd64
  buildahVersion: 1.19.6
  cgroupManager: systemd
  cgroupVersion: v2
  conmon:
    package: 'conmon: /usr/bin/conmon'
    path: /usr/bin/conmon
    version: 'conmon version 2.0.25, commit: unknown'
  cpus: 2
  distribution:
    distribution: debian
    version: "11"
  eventLogger: journald
  hostname: debian11
  idMappings:
    gidmap: null
    uidmap: null
  kernel: 5.10.0-8-amd64
  linkmode: dynamic
  memFree: 3365183488
  memTotal: 4122267648
  ociRuntime:
    name: crun
    package: 'crun: /usr/bin/crun'
    path: /usr/bin/crun
    version: |-
      crun version 0.17
      commit: 0e9229ae34caaebcb86f1fde18de3acaf18c6d9a
      spec: 1.0.0
      +SYSTEMD +SELINUX +APPARMOR +CAP +SECCOMP +EBPF +YAJL
  os: linux
  remoteSocket:
    exists: true
    path: /run/podman/podman.sock
  security:
    apparmorEnabled: true
    capabilities: CAP_CHOWN,CAP_DAC_OVERRIDE,CAP_FOWNER,CAP_FSETID,CAP_KILL,CAP_NET_BIND_SERVICE,CAP_SETFCAP,CAP_SETGID,CAP_SETPCAP,CAP_SETUID,CAP_SYS_CHROOT
    rootless: false
    seccompEnabled: true
    selinuxEnabled: false

Definizioni rapide:

  • OCI: Open Container Initiative, standard per immagini e runtime dei container.
  • libpod: libreria che gestisce il ciclo di vita di container, immagini e pod.
  • crun: runtime OCI veloce e leggero scritto in C.
  • rootless: esecuzione dei container senza privilegi root.

Importante: Podman può essere eseguito in modalità rootless per aumentare la sicurezza. Alcune funzionalità (come porte <1024 o mappature UID/GID specifiche) possono richiedere privilegi di root.

Aggiungere un registro OCI

Podman usa il file di configurazione dei registri /etc/containers/registries.conf per scaricare le immagini. Modificalo se vuoi aggiungere registri o definire registri non sicuri:

nano /etc/containers/registries.conf

Aggiungi le seguenti righe alla fine del file:

[registries.insecure]
registries = [ ]
# If you need to block pull access from a registry, uncomment the section below
# and add the registries fully-qualified name.
# Docker only
[registries.block]
registries = [ ]

Salva e chiudi il file.

Come usare Podman: comandi base

Di seguito i comandi principali per lavorare con immagini e container.

Per scaricare l’immagine Debian:

podman pull debian

Esempio di output:

Resolved "debian" as an alias (/etc/containers/registries.conf.d/shortnames.conf)
Trying to pull docker.io/library/debian:latest...
Getting image source signatures
Copying blob 647acf3d48c2 done  
Copying config 827e561138 done  
Writing manifest to image destination
Storing signatures
827e5611389abf13dad1057e92f163b771febc0bcdb19fa2d634a7eb0641e0cc

Visualizza le immagini scaricate:

podman images

Output esempio:

REPOSITORY                TAG     IMAGE ID      CREATED      SIZE
docker.io/library/debian  latest  827e5611389a  11 days ago  129 MB

Avvia un container dalla immagine Debian:

podman run -dit debian:latest

Riceverai un ID del container, ad esempio:

f85c4df5ab787912c984ec820571da7b95b32736ef94ba691d9ab5019c5b5103

Elenca i container in esecuzione:

podman ps

Output esempio:

CONTAINER ID  IMAGE                            COMMAND  CREATED         STATUS             PORTS   NAMES
f85c4df5ab78  docker.io/library/debian:latest  bash     13 seconds ago  Up 13 seconds ago          competent_cori

Ispeziona un container:

podman inspect f85c4df5ab78

Esempio (inizio dell’output):

[
    {
        "Id": "f85c4df5ab787912c984ec820571da7b95b32736ef94ba691d9ab5019c5b5103",
        "Created": "2021-11-28T07:00:12.795302341Z",
        "Path": "bash",
        "Args": [
            "bash"
        ],
        "State": {
            "OciVersion": "1.0.2-dev",
            "Status": "running",
            "Running": true,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 6881,
            "ConmonPid": 6878,
            "ExitCode": 0,
            "Error": "",
            "StartedAt": "2021-11-28T07:00:13.551753552Z",
            "FinishedAt": "0001-01-01T00:00:00Z",
            "Healthcheck": {
                "Status": "",
                "FailingStreak": 0,
                "Log": null
            }
        },

Controlla i log del container:

podman logs f85c4df5ab78

Per connetterti a una shell del container in esecuzione:

podman exec -it f85c4df5ab78 /bin/bash

Otterrai una shell del tipo:

root@f85c4df5ab78:/#

Per uscire dalla shell del container:

root@f85c4df5ab78:/# exit

Fermare e rimuovere container

Per fermare un container in esecuzione:

podman stop f85c4df5ab78

Verifica i container, compresi quelli fermati:

podman ps -a

Output esempio:

CONTAINER ID  IMAGE                            COMMAND  CREATED        STATUS                       PORTS   NAMES
f85c4df5ab78  docker.io/library/debian:latest  bash     3 minutes ago  Exited (137) 10 seconds ago          competent_cori

Per rimuovere un container fermo:

podman rm f85c4df5ab78

Comandi utili per operazioni veloci:

# fermare l'ultimo container creato
podman stop --latest

# avviare l'ultimo container stoppato
podman start --latest

# rimuovere l'ultimo container
podman rm --latest

# rimuovere tutti i container (forzatamente)
podman rm -f `podman ps -aq`

# rimuovere un'immagine
podman rmi 827e5611389a

Esempio di output dopo la rimozione di un’immagine:

Untagged: docker.io/library/debian:latest
Deleted: 827e5611389abf13dad1057e92f163b771febc0bcdb19fa2d634a7eb0641e0cc

Cheat sheet rapida

  • Installare: apt-get install podman -y
  • Versione: podman –version
  • Info host: podman info
  • Scaricare immagine: podman pull
  • Elencare immagini: podman images
  • Avviare container (detached): podman run -dit
  • Elencare container: podman ps
  • Ispezionare container: podman inspect
  • Log: podman logs
  • Shell nel container: podman exec -it /bin/bash
  • Fermare: podman stop
  • Rimuovere container: podman rm
  • Rimuovere immagine: podman rmi

Migrare da Docker a Podman: suggerimenti pratici

  • Comandi: La maggior parte dei comandi Docker funziona con Podman, spesso senza cambi. Prova prima i comandi base.
  • Docker Compose: Podman supporta podman-compose e una compatibilità crescente per docker-compose; tuttavia alcune feature potrebbero differire.
  • Immagini: Le immagini Docker Hub funzionano con Podman senza modifiche.
  • Sistemi di monitoring e CI: Verifica gli hook o gli agent che si aspettano il demone Docker e aggiorna le configurazioni a Podman o al socket systemd.

Quando potresti avere problemi:

  • Funzionalità che richiedono il demone Docker specifico (plugin, driver esterni) potrebbero non funzionare.
  • Alcune pipeline CI che eseguono comandi specifici del demone potrebbero richiedere adattamenti.

Sicurezza e hardening rapido

  • Esegui Podman in rootless quando possibile.
  • Usa SELinux/AppArmor e seccomp per confinare i container.
  • Non esporre porte host sensibili senza controlli.
  • Usa immutabilità delle immagini e firme per immagini di produzione.
  • Isola volumi sensibili e limita i bind mount non necessari.

Check-list per ruoli

System Administrator

  • Verificare repository e aggiornamenti di Podman
  • Configurare registri e accessi
  • Abilitare logging e monitoring

Developer

  • Testare immagini localmente con podman run
  • Usare Dockerfile esistenti, buildare con podman build
  • Verificare compatibilità con docker-compose se necessario

Security Engineer

  • Abilitare rootless dove possibile
  • Applicare profili AppArmor/SELinux e seccomp
  • Controllare capacità (capabilities) assegnate ai container

Glossario in una riga

  • Container: processo isolato con filesystem e risorse dedicati.
  • Immagine: snapshot leggibile del filesystem di un container.
  • Pod: gruppo di container che condividono rete e IPC (termine ereditato da Kubernetes).
  • Rootless: esecuzione senza privilegi root.

Risorse aggiuntive

Una guida dettagliata su come creare immagini, volumi e gestire Podman è disponibile alla documentazione ufficiale e a guide di avvio rapido: Getting Started with Podman: Manage Images, Containers and Volumes

Conclusione

In questo articolo abbiamo spiegato come installare e usare Podman su Debian 11. Puoi ora utilizzare Podman come alternativa a Docker per eseguire e gestire container, con il vantaggio di non richiedere un demone centrale e di supportare modalità rootless per una maggiore sicurezza.

Autore
Redazione

Materiali simili

Installare e usare Podman su Debian 11
DevOps

Installare e usare Podman su Debian 11

Guida rapida a apt-pinning su Debian
Linux

Guida rapida a apt-pinning su Debian

Forzare FSR 4 con OptiScaler: guida completa
Guide.

Forzare FSR 4 con OptiScaler: guida completa

Dansguardian + Squid NTLM su Debian Etch
Rete

Dansguardian + Squid NTLM su Debian Etch

Riparare errore installazione SD su Android
Android

Riparare errore installazione SD su Android

Cartelle di rete con KNetAttach e remote:/
Linux

Cartelle di rete con KNetAttach e remote:/