Podman installeren als Docker alternatief op Debian 11

Podman (de POD MANager) is een OCI-compliant container engine, ontwikkeld door Red Hat als een drop-in vervanger van Docker. Het wordt gebruikt om, containers, images, en volumes te beheren en uit te voeren via een command-line interface. Zowel Docker als Podman zijn vergelijkbare software. Het enige verschil is dat Podman geen daemon nodig heeft om containers te draaien, terwijl Docker de Docker Engine daemon nodig heeft. Podman gebruikt de libpod bibliotheek om een heel container ecosysteem te beheren.

In deze zelfstudie laten we je zien hoe je Podman kunt installeren en gebruiken op Debian 11.

Vereisten

  • Een server waarop Debian 11 draait.
  • Een root wachtwoord is op de server ingesteld.

Installeer Podman

Het Podman pakket is opgenomen in de standaard repository van Debian 11. Je kunt het installeren door gewoon het volgende commando uit te voeren:

apt-get install podman -y

Zodra Podman geïnstalleerd is, controleer je de Podman versie met het onderstaande commando:

podman --version

Je zou de Podman versie moeten zien in de volgende uitvoer:

podman version 3.0.1

Je kunt meer informatie over Podman krijgen met het volgende commando:

podman info

Je krijgt de volgende uitvoer:

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

OCI register toevoegen

Podman gebruikt het register configuratiebestand /etc/containers/registries.conf om alle container images van het internet te halen. Je zult het dus moeten bewerken en het register definiëren:

nano /etc/containers/registries.conf

Voeg de volgende regels toe aan het eind van het bestand:

[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 = [ ]

Sla het bestand op en sluit het als je klaar bent.

Hoe Podman gebruiken

In dit deel laten we je zien hoe je het Podman commando kunt gebruiken om images te trekken en een container te draaien.

Om een Debian image te trekken, voer je het volgende commando uit:

podman pull debian

Je krijgt de volgende uitvoer:

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

Je kunt je gedownloade image zien met het volgende commando:

podman images

Je krijgt de volgende uitvoer:

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

Draai vervolgens een container vanaf het Debian image met het volgende commando:

podman run -dit debian:latest

Je krijgt de volgende uitvoer:

f85c4df5ab787912c984ec820571da7b95b32736ef94ba691d9ab5019c5b5103

Je kunt alle draaiende containers opnoemen met het volgende commando:

podman ps

Je zou de volgende uitvoer moeten zien:

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

Om de draaiende container te inspecteren, voer je het Podman commando uit door container ID op te geven:

podman inspect f85c4df5ab78

Je krijgt de volgende uitvoer:

[
    {
        "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
            }
        },

Om het containerlogboek te bekijken, voer je het volgende commando uit:

podman logs f85c4df5ab78

Als je verbinding wilt maken met de draaiende container, voer dan het volgende commando uit:

podman exec -it f85c4df5ab78 /bin/bash

Je komt in de containershell zoals hieronder te zien is:

[email protected]:/#

Om uit de containershell te komen, voer je het volgende commando uit:

[email protected]:/# exit

Hoe een container stoppen en verwijderen

Je kunt Podman ook gebruiken om een container te starten, te stoppen, en te verwijderen.

Om een draaiende container te stoppen, voer je het volgende commando uit:

podman stop f85c4df5ab78

Je kunt nu de gestopte container verifiëren met het volgende commando:

podman ps -a

Je zou de volgende uitvoer moeten zien:

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

Om een gestopte container te verwijderen, voer je het volgende commando uit:

podman rm f85c4df5ab78

Als je de nieuwste container wilt stoppen, voer dan het volgende commando uit:

podman stop --latest

Om de nieuwste container te starten, voer je het volgende commando uit:

podman start --latest

Om de nieuwste container te verwijderen, voer je het volgende commando uit:

podman rm --latest

Om alle draaiende containers te verwijderen, voer je het volgende commando uit:

podman rm -f `podman ps -aq`

Om een image te verwijderen, voer je het volgende commando uit:

podman rmi 827e5611389a

Je krijgt de volgende uitvoer:

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

Conclusie

In de bovenstaande post hebben we uitgelegd hoe je de Podman op Debian 11 kunt installeren en gebruiken. Je kunt nu de Podman gebruiken als vervanging van Docker om de containers te draaien en te beheren.