Ricerca nel sito web

Come installare Podman come alternativa a Docker su Debian 11


Su questa pagina

  1. Prerequisiti
  2. Installa Podman
  3. Aggiungi registro OCI
  4. Come usare Podman
  5. Come fermare e rimuovere un contenitore
  6. Introduzione a Podman
  7. Conclusione

Podman (POD MANager) è un motore di container conforme a OCI, sviluppato da Red Hat come sostituto immediato di Docker. Viene utilizzato per gestire ed eseguire contenitori, immagini e volumi tramite un'interfaccia della riga di comando. Sia Docker che Podman sono software simili. L'unica differenza è che Podman non richiede un demone per eseguire i container, mentre Docker necessita del demone Docker Engine. Podman utilizza la libreria libpod per gestire un intero ecosistema di container.

In questo tutorial, ti mostreremo come installare e utilizzare Podman su Debian 11.

Prerequisiti

  • Un server che esegue Debian 11.
  • Sul server è configurata una password di root.

Installa Podmann

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

apt-get install podman -y

Una volta installato Podman, verifica la versione di Podman utilizzando il comando seguente:

podman --version

Dovresti vedere la versione di Podman nel seguente output:

podman version 3.0.1

Puoi ottenere maggiori informazioni su Podman usando il seguente comando:

podman info

Otterrai il seguente output:

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

Aggiungi registro OCI

Podman utilizza il file di configurazione del registro /etc/containers/registries.conf per estrarre tutte le immagini del contenitore da Internet. Quindi dovrai modificarlo e definire il registro:

nano /etc/containers/registries.conf

Aggiungere 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 quando hai finito.

Come usare Podman

In questa sezione, ti mostreremo come utilizzare il comando Podman per estrarre immagini ed eseguire un contenitore.

Per estrarre un'immagine Debian, esegui il seguente comando:

podman pull debian

Otterrai il seguente 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

Puoi vedere l'immagine scaricata usando il seguente comando:

podman images

Otterrai il seguente output:

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

Quindi, esegui un contenitore dall'immagine Debian usando il seguente comando:

podman run -dit debian:latest

Otterrai il seguente output:

f85c4df5ab787912c984ec820571da7b95b32736ef94ba691d9ab5019c5b5103

Puoi elencare tutti i contenitori in esecuzione utilizzando il seguente comando:

podman ps

Dovresti vedere il seguente output:

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

Per ispezionare il contenitore in esecuzione, esegui il comando Podman specificando l'ID contenitore:

podman inspect f85c4df5ab78

Otterrai il seguente 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
            }
        },

Per controllare il log del contenitore, eseguire il comando seguente:

podman logs f85c4df5ab78

Se desideri connetterti al contenitore in esecuzione, esegui il seguente comando:

podman exec -it f85c4df5ab78 /bin/bash

Entrerai nella shell del contenitore come mostrato di seguito:

:/#

Per uscire dalla shell del contenitore, eseguire il seguente comando:

:/# exit

Come fermare e rimuovere un contenitore

Puoi anche utilizzare Podman per avviare, arrestare e rimuovere un contenitore.

Per arrestare un contenitore in esecuzione, eseguire il seguente comando:

podman stop f85c4df5ab78

Ora puoi verificare il contenitore arrestato utilizzando il seguente comando:

podman ps -a

Dovresti vedere il seguente output:

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 contenitore arrestato, eseguire il comando seguente:

podman rm f85c4df5ab78

Se desideri arrestare l'ultimo contenitore, esegui il seguente comando:

podman stop --latest

Per avviare l'ultimo contenitore, eseguire il comando seguente:

podman start --latest

Per rimuovere l'ultimo contenitore, eseguire il comando seguente:

podman rm --latest

Per rimuovere tutti i contenitori in esecuzione, eseguire il seguente comando:

podman rm -f `podman ps -aq`

Per rimuovere un'immagine, eseguire il seguente comando:

podman rmi 827e5611389a

Otterrai il seguente output:

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

Iniziare con Podman

Una guida dettagliata su come utilizzare Podman per creare immagini, volumi e contenitori è disponibile qui: Introduzione a Podman: gestione di immagini, contenitori e volumi

Conclusione

Nel post precedente, abbiamo spiegato come installare e utilizzare Podman su Debian 11. Ora puoi utilizzare Podman in sostituzione di Docker per eseguire e gestire i container.