En introduktion til Podman

1. Introduktion

I denne vejledning ser vi på Podman (forkortelse for "Pod Manager"), dens funktioner og anvendelse.

2. Podman

Podman er et open-source containerhåndteringsværktøj til udvikling, styring og kørsel af OCI-containere. Lad os se på nogle af fordelene ved Podman sammenlignet med andre containeradministrationsværktøjer:

  • Billeder oprettet af Podman er kompatible med andre containeradministrationsværktøjer. Billederne oprettet af Podman overholder OCI-standarden, og de kan derfor skubbes til andre containerregistre som Docker Hub
  • Det kan køres som en normal bruger uden at kræve root-rettigheder. Når du kører som en ikke-bruger, opretter Podman et brugernavneområde, hvori det erhverver rodtilladelsen. Dette gør det muligt at montere filsystemer og opsætte krævede containere
  • Det giver mulighed for at styre bælg. I modsætning til de andre container-runtime-værktøjer lader Podman brugeren administrere pods (en gruppe på en eller flere containere, der fungerer sammen). Brugere kan udføre handlinger som at oprette, liste, inspicere på bælgene

Der er dog visse begrænsninger for Podman:

  • Det kører kun på Linux-baserede systemer. I øjeblikket kører Podman kun på Linux-baserede operativsystemer og har ikke en indpakning til Windows og macOS.
  • Der er ikke noget alternativ til Docker Compose. Podman har ikke understøttelse af administration af flere containere lokalt, svarende til hvad Docker Compose gør. En implementering af Docker Compose ved hjælp af Podman-backend udvikles som en del af podman-komponere projekt, men dette er stadig i gang.

3. Sammenligning med Docker

Nu hvor vi har forstået, hvad Podman er, og hvad fordelene og begrænsningerne er, lad os sammenligne det med Docker, et af de mest anvendte værktøjer til containeradministration.

3.1. Command Line Interface (CLI)

Podman tilbyder det samme sæt kommandoer, der er eksponeret af Docker-klienten. Med andre ord er der en en-til-en kortlægning mellem kommandoerne for disse to værktøjer.

Men kommandoerne kan lide podman ps og podman-billeder viser ikke containere eller billeder oprettet ved hjælp af Docker. Dette skyldes, at Podmans lokale lager er / var / lib / containere i modsætning til / var / lib / docker vedligeholdt af Docker.

3.2. Containermodel

Docker bruger en klientserverarkitektur til containerne, mens Podman bruger den traditionelle fork-exec-model almindelig på tværs af Linux-processer. Containerne oprettet ved hjælp af Podman er den underordnede proces til den overordnede Podman-proces. Dette er grunden til, at når versionskommandoen køres for både Docker og Podman, viser Docker lister over versionerne af både klient og server, mens Podman kun viser sin version.

Eksempel på output for docker-version:

Klient: Version: 17.12.0-ce API-version: 1.35 Go-version: go1.9.2 Git commit: c97c6d6 Bygget: Wed Dec 27 20:11:19 2017 OS / Arch: linux / amd64 Server: Motor: Version: 17.12.0 -ce API version: 1.35 (minimum version 1.12) Go version: go1.9.2 Git commit: c97c6d6 Bygget: Wed Dec 27 20:09:53 2017 OS / Arch: linux / amd64 Eksperimentel: falsk

Eksempel på output for podman-version:

Version: 0.3.2-dev Go Version: go1.9.4 Git Commit: "4f4a78abb40fa0e8407e8a55d5a67a2650d8fd96" Bygget: Man Mar 5 11:10:35 2018 OS / Arch: linux / amd64

Da Podman selv kører som en proces, kræver det ikke nogen dæmonprocesser i baggrunden. I modsætning til Podman kræver Docker en dæmonproces, Docker-dæmon, for at koordinere API-anmodningerne mellem klienten og serveren.

3.3. Rootless Mode

Som nævnt tidligere kræver Podman ikke rodadgang for at køre sine kommandoer. Docker er derimod afhængig af dæmonprocessen, kræver root-rettigheder eller kræver, at brugeren er en del af docker gruppe for at kunne køre Docker-kommandoerne uden root-privilegium.

$ sudo usermod -aG docker $ USER

4. Installation og brug

Lad os starte med at installere Podman. Det podman info kommando viser Podman-systemoplysninger og hjælper med at kontrollere installationsstatus.

$ podman info

Denne kommando viser oplysningerne relateret til værten, såsom Kernel-versionen, brugt og tilgængelig swap-plads, og også informationen relateret til Podman såsom registre, den har adgang til at trække og skubbe billeder til, lagerdriveren, den bruger, lagerplacering og andre:

vært: MemFree: 546578432 MemTotal: 1040318464 SwapFree: 4216320000 SwapTotal: 4216320000 arch: amd64 cpus: 2 hostname: base-xenial kernel: 4.4.0-116-generic os: linux oppetid: 1m 2.64s usikker registre: registre: [] registries : registre: - docker.io - registry.fedoraproject.org - registry.access.redhat.com butik: ContainerStore: nummer: 0 GraphDriverName: overlay GraphOptions: null GraphRoot: / var / lib / containers / storage GraphStatus: Backing Filesystem: extfs Native Overlay Diff: "true" Understøtter d_type: "true" ImageStore: nummer: 0 RunRoot: / var / run / containere / opbevaring

Lad os se på nogle af de grundlæggende Podman-kommandoer.

4.1. Oprettelse af et billede

Først ser vi på at oprette et billede ved hjælp af Podman. Lad os starte med at oprette en Dockerfil med følgende indhold:

FRA centos: seneste KØR yum -y installer httpd CMD ["/ usr / sbin / httpd", "-D", "FOREGROUND"] EKSPONER 80 

Lad os nu oprette billedet ved hjælp af bygge kommando:

$ podman build.

Her trækker vi først basisbilledet af CentOS, installerer Apache oven på det og kører det derefter som en forgrundsproces med porten 80 eksponeret. Vi kan få adgang til Apache-serveren ved at køre dette billede og kortlægge den eksponerede port til en værtsport.

Det bygge kommando passerer rekursivt alle de tilgængelige mapper i kontekstmappen. Den aktuelle arbejdsmappe bliver som standard byggekonteksten, når der ikke er angivet nogen mappe. Derfor tilrådes det ikke at have filer og mapper, der ikke er nødvendige for billedoprettelsen, i kontekstmappen.

4.2. Visning af tilgængelige billeder

Det podman-billeder kommando viser alle tilgængelige billeder. Det understøtter også forskellige muligheder for at filtrere billederne.

$ podman-billeder

Denne kommando viser alle de tilgængelige billeder i det lokale lager. Den indeholder oplysningerne om, hvilket arkiv billedet blev trukket fra, tagget, dets billed-id, oprettet tid og størrelse.

REPOSITORY TAG BILLED-ID OPRETTET STØRRELSE docker.io/library/centos seneste 0f3e07c0138f 2 måneder siden 227MB 

4.3. Kører billeder

Det løb kommando opretter en container med et givet billede og kører det derefter. Lad os køre det CentOS-billede, vi har oprettet tidligere

$ podman-kørsel -p 80:80 -dit centos

Denne kommando kontrollerer først, om der er et lokalt billede tilgængeligt for CentOS. Hvis billedet ikke er til stede lokalt, forsøger det at trække billedet fra de registre, der blev konfigureret. Hvis billedet ikke er til stede i registre, viser det en fejl om, at det ikke er muligt at finde billedet.

Ovenstående kørselskommando specificerer at kortlægge den eksponerede 80-port i containeren til værtens port 80 og dit flag angiver at køre containeren i løsrevet og interaktiv tilstand. Id'et for den oprettede container er output.

4.4. Sletning af billeder

Det rmi kommando fjerner de billeder, der findes i det lokale arkiv. Flere billeder kan fjernes ved at angive deres id'er som pladsadskilt i input. Angivelse af -en flag fjerner alle billederne

$ podman rmi 785188cd988c

4.5. Notering af containerne

Alle tilgængelige containere inklusive dem, der ikke kører, kan vises med ps -a kommando. Svarende til billeder kommando, dette kan også bruges med forskellige muligheder.

$ podman ps -a

Outputtet til ovenstående kommando viser alle containere med de oplysninger, som f.eks. Det billede, den blev oprettet fra, den kommando, der blev brugt til at starte den, dens status, porte, den kører på, og det navn, der er tildelt den.

CONTAINER ID BILLEDEKommandO Oprettet ved STATUS PORTS NAVNE eed30719cd37 centos / bin / bash 2019-12-09 02:57:37 +0000 UTC Op for 14 minutter siden 0.0.0.0:80->80/udp, 0.0.0.0:80-> 80 / tcp reverent_liskov

4.6. Sletning af containere

Det rm kommando fjerner containerne. Denne kommando fjerner ikke containerne i kørende eller pausetilstand. De skal først stoppes og derefter fjernes.

$ podman stop eed30719cd37 $ podman rm eed30719cd37

4.7. Oprettelse af bælg

Det pod oprette kommando opretter en pod. Opret kommandoen understøtter forskellige muligheder.

$ podman pod oprette

Det pod oprette kommando opretter en pod med en infra beholder som standard tilknyttet den, medmindre det udtrykkeligt er angivet med infraflag som falsk.

$ podman pod create --infra = false

Infra container giver Podman mulighed for at forbinde forskellige containere i pod'en.

4.8. Listing Pods

Det pod-liste kommando viser alle de tilgængelige bælg

$ podman pod-liste

Outputtet fra denne kommando viser oplysningerne såsom pod-id'et, dets navn, antallet af tilknyttede containere, id'et for infra-containeren, hvis den er tilgængelig:

POD ID NAVN STATUS OPLAGT # AF CONTAINERS INFRA ID 7e0a68528aed gallant_raman Kører for 5 sekunder siden 1 c6d06673c667

Alle tilgængelige Podman-kommandoer og deres anvendelse kan findes i den officielle dokumentation.

5. Konklusion

I denne vejledning har vi set på det grundlæggende i Podman og dets funktioner, dets sammenligning med Docker og et par af de tilgængelige kommandoer.

Som sædvanlig er den kodeeksempel, der bruges i denne artikel, tilgængelig via GitHub.


$config[zx-auto] not found$config[zx-overlay] not found