En introduksjon til Podman

1. Introduksjon

I denne veiledningen ser vi på Podman (forkortelse for "Pod Manager"), dens funksjoner og bruk.

2. Podman

Podman er et verktøy for åpen kildekontaineradministrasjon for å utvikle, administrere og kjøre OCI-containere. La oss ta en titt på noen av fordelene med Podman, sammenlignet med andre verktøy for containeradministrasjon:

  • Bilder laget av Podman er kompatible med andre verktøy for containeradministrasjon. Bildene opprettet av Podman overholder OCI-standarden, og de kan dermed skyves til andre containerregistre som Docker Hub
  • Den kan kjøres som en vanlig bruker uten å kreve root-rettigheter. Når du kjører som en ikke-bruker, oppretter Podman et brukernavnområde der den får rottillatelsen. Dette gjør det mulig å montere filsystemer og sette opp nødvendige containere
  • Det gir muligheten til å administrere pods. I motsetning til de andre verktøyene for containerruntime, lar Podman brukeren administrere pods (en gruppe på en eller flere containere som fungerer sammen). Brukere kan utføre operasjoner som å opprette, liste opp, inspisere på belgene

Det er imidlertid visse begrensninger for Podman:

  • Den kjører bare på Linux-baserte systemer. For øyeblikket kjører Podman bare på Linux-baserte operativsystemer og har ikke en innpakning for Windows og macOS.
  • Det er ikke noe alternativ for Docker Compose. Podman har ikke støtte for å administrere flere containere lokalt, i likhet med hva Docker Compose gjør. En implementering av Docker Compose ved hjelp av Podman-backend utvikles som en del av podman-komponere prosjekt, men dette pågår fortsatt.

3. Sammenligning med Docker

Nå som vi har forstått hva Podman er og hva fordelene og begrensningene er, la oss sammenligne det med Docker, et av de mest brukte verktøyene for containeradministrasjon.

3.1. Kommandolinjegrensesnitt (CLI)

Podman tilbyr det samme settet med kommandoer eksponert av Docker-klienten. Med andre ord er det en en-til-en-kartlegging mellom kommandoene til disse to verktøyene.

Imidlertid liker kommandoene podman ps og podman-bilder vil ikke vise containere eller bilder opprettet ved hjelp av Docker. Dette er fordi Podmans lokale arkiv er / var / lib / containere i motsetning til / var / lib / docker vedlikeholdt av Docker.

3.2. Beholdermodell

Docker bruker en klientserverarkitektur for containerne, mens Podman bruker den tradisjonelle fork-exec-modellen vanlig på tvers av Linux-prosesser. Containerne opprettet ved hjelp av Podman, er barneprosessen til den overordnede Podman-prosessen. Dette er grunnen til at når versjonskommandoen kjøres for både Docker og Podman, viser Docker opp versjonene av både klient og server, mens Podman bare lister opp sin versjon.

Eksempel på utdata for dockerversjon:

Klient: Versjon: 17.12.0-ce API-versjon: 1.35 Go-versjon: go1.9.2 Git commit: c97c6d6 Bygget: Ons 27 desember 20:11:19 2017 OS / Arch: linux / amd64 Server: Motor: Versjon: 17.12.0 -ce API-versjon: 1.35 (minimum versjon 1.12) Go-versjon: go1.9.2 Git commit: c97c6d6 Bygget: ons 27 desember 20:09:53 2017 OS / Arch: linux / amd64 Eksperimentell: falsk

Eksempel på utdata for podman-versjon:

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

Siden Podman selv kjører som en prosess, krever det ingen demonprosesser i bakgrunnen. I motsetning til Podman krever Docker en daemon-prosess, Docker-demon, for å koordinere API-forespørslene mellom klienten og serveren.

3.3. Rotløs modus

Som nevnt tidligere krever Podman ikke root-tilgang for å kjøre kommandoene. Docker, derimot, avhengig av demoneprosessen, krever root-rettigheter eller krever at brukeren er en del av docker gruppe å kunne kjøre Docker-kommandoene uten root-privilegium.

$ sudo usermod -aG docker $ USER

4. Installasjon og bruk

La oss starte med å installere Podman. De podman info kommandoen viser Podman systeminformasjon og hjelper deg med å kontrollere installasjonsstatusen.

$ podman info

Denne kommandoen viser informasjonen som er relatert til verten, slik som Kernel-versjonen, bytteplass som er brukt og tilgjengelig, og også informasjonen relatert til Podman, for eksempel registre den har tilgang til å trekke og skyve bilder til, lagringsdriver den bruker, lagringssted og andre:

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

La oss ta en titt på noen av de grunnleggende Podman-kommandoene.

4.1. Opprette et bilde

Først skal vi se på å lage et bilde ved hjelp av Podman. La oss starte med å lage en Dockerfil med følgende innhold:

FRA centos: siste RUN yum -y install httpd CMD ["/ usr / sbin / httpd", "-D", "FOREGROUND"] EXPOSE 80 

La oss nå lage bildet ved hjelp av bygge kommando:

$ podman build.

Her trekker vi først basisbildet til CentOS, installerer Apache på toppen av det og kjører det som en forgrunnsprosess med porten 80 utsatt. Vi får tilgang til Apache-serveren ved å kjøre dette bildet og kartlegge den eksponerte porten til en vertsport.

De bygge kommandoen passerer rekursivt alle mappene som er tilgjengelige i kontekstkatalogen. Gjeldende arbeidskatalog blir som standard byggekontekst når ingen katalog er spesifisert. Derfor er det tilrådelig å ikke ha filer og mapper som ikke er nødvendige for å lage bildet, i kontekstkatalogen.

4.2. Oppføring av tilgjengelige bilder

De podman-bilder kommandoen viser alle tilgjengelige bilder. Den støtter også forskjellige alternativer for å filtrere bildene.

$ podman-bilder

Denne kommandoen viser alle bildene som er tilgjengelige i det lokale depotet. Den inneholder informasjonen fra hvilket depot bildet ble hentet fra, koden, bildens ID, opprettet tid og størrelse.

REPOSITORY TAG BILDE-ID LAGET STØRRELSE docker.io/library/centos siste 0f3e07c0138f 2 måneder siden 227MB 

4.3. Løpende bilder

De løpe kommandoen oppretter en beholder med et gitt bilde og kjører det deretter. La oss kjøre CentOS-bildet vi har opprettet tidligere

$ podman run -p 80:80 -dit centos

Denne kommandoen sjekker først om det er et lokalt bilde tilgjengelig for CentOS. Hvis bildet ikke er til stede lokalt, prøver det å hente bildet fra registrene som ble konfigurert. Hvis bildet ikke er tilstede i registrene, viser det en feil om at du ikke finner bildet.

Ovennevnte kjørekommando angir å kartlegge den eksponerte 80-porten til containeren til porten 80 til verten og dit flagg angir å kjøre containeren i frittliggende og interaktiv modus. IDen til den opprettet beholderen vil være utdata.

4.4. Slette bilder

De rmi kommandoen fjerner bildene som er tilstede i det lokale depotet. Flere bilder kan fjernes ved å oppgi ID-ene deres som romskilt i inngangen. Spesifisere -en flagg fjerner alle bildene

$ podman rmi 785188cd988c

4.5. Oppføring av containere

Alle tilgjengelige containere, inkludert de som ikke kjører, kan oppføres ved hjelp av ps -a kommando. I likhet med Bilder kommando, kan dette også brukes med forskjellige alternativer.

$ podman ps -a

Utgangen for kommandoen ovenfor viser alle containere med informasjonen, for eksempel et bilde den ble opprettet fra, kommandoen som ble brukt til å starte den, dens status, porter den kjører på og navnet som er tildelt den.

CONTAINER ID BILDEKOMMANDO LAGET PÅ STATUS PORTS NAVN eed30719cd37 centos / bin / bash 2019-12-09 02:57:37 +0000 UTC Opp 14 minutter siden 0.0.0.0:80->80/udp, 0.0.0.0:80-> 80 / tcp reverent_liskov

4.6. Slette containere

De rm kommandoen fjerner containerne. Denne kommandoen fjerner ikke beholderne i kjørende eller midlertidig stoppet tilstand. De må først stoppes og deretter fjernes.

$ podman stopp eed30719cd37 $ podman rm eed30719cd37

4.7. Opprette Pods

De pod lage kommando oppretter en pod. Opprett kommandoen støtter forskjellige alternativer.

$ podman pod lage

De pod lage kommando oppretter en pod med en infra beholder som standard tilknyttet den, med mindre eksplisitt er angitt med infraflagg som falsk.

$ podman pod create --infra = false

Med Infra container kan Podman koble til forskjellige containere i poden.

4.8. Listing Pods

De pod-listen kommandoen viser alle tilgjengelige pods

$ podman podliste

Utgangen av denne kommandoen viser informasjonen som pod-id, navn, antall tilknyttede containere, id til infra-container hvis tilgjengelig:

POD ID-NAVN STATUS OPPRETT ANTALL BEHOLDERE INFRA ID 7e0a68528aed gallant_raman Kjører for 5 sekunder siden 1 c6d06673c667

Alle tilgjengelige Podman-kommandoer og deres bruk finner du i den offisielle dokumentasjonen.

5. Konklusjon

I denne veiledningen har vi sett på det grunnleggende om Podman og dets funksjoner, sammenligningen med Docker og noen få tilgjengelige kommandoer.

Som vanlig er kodeeksemplet som brukes i denne artikkelen tilgjengelig via GitHub.


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