GNU/Linux >> Linux Esercitazione >  >> Panels >> Docker

Che cos'è Podman e in che cosa differisce da Docker?

Podman è un motore di container compatibile con la specifica OCI Containers. Podman fa parte di RedHat Linux, ma può essere installato anche su altre distribuzioni.

Poiché è conforme a OCI, Podman può essere utilizzato come sostituto drop-in per il più noto runtime Docker. La maggior parte dei comandi Docker può essere tradotta direttamente in comandi Podman.

Ecco come si accumulano i due tempi di esecuzione.

Cos'è un runtime?

Per molte persone, un "contenitore" è ancora un "contenitore Docker". Questa non è una rappresentazione accurata dell'attuale ecosistema di container. Docker produce immagini del contenitore OCI, che possono essere utilizzate con altri runtime compatibili. Kubernetes è un esempio, mentre Podman è un altro.

Di conseguenza, Podman e Docker hanno funzionalità principali sovrapposte. Entrambi producono immagini che l'altro può utilizzare per eseguire i container. I due runtime aggiungono quindi le proprie specializzazioni oltre alle funzionalità di containerizzazione di base.

Come installare Podman

Se stai usando RedHat Linux, Podman è negli extras deposito. Usa subscription-manager per aggiungere il repository. Potrai quindi utilizzare yum per installare Podman.

su -
subscription-manager repos --enable rhel-7-server-extras-beta-rpms
yum -y install podman

La maggior parte delle altre distribuzioni Linux popolari include anche Podman nei loro repository predefiniti. Puoi apt install podman , dnf install podman o pacman -S podman per installarlo.

Lavorare con contenitori e immagini

La CLI di Podman è deliberatamente allineata con quella di Docker. Ciò significa che puoi utilizzare i familiari comandi Docker per interagire con i contenitori Podman:

podman pull my-image:latest

podman run my-image:latest --name my-container

podman ps

podman rm my-container

Podman dovrebbe essere immediatamente familiare agli utenti Docker. Potresti alias docker a podman e non notare una differenza nell'uso quotidiano. Naturalmente, non tutte le funzionalità sono disponibili, tuttavia, provare a utilizzare i comandi Docker Swarm genererà un errore, poiché Podman non ha nulla di equivalente a Swarm.

Cosa c'è di diverso in Podman?

Sebbene sembri simile a Docker, Podman presenta alcune differenze distintive. Il primo e probabilmente il più significativo è la sua architettura. Podman è senza demone —non esiste un processo di lunga durata per la gestione dei tuoi container.

Quando esegui un podman comando, ti stai interfacciando direttamente con il processo che sta avviando i tuoi contenitori e recuperando le tue immagini. La CLI di Docker dipende da una connessione al demone Docker. La CLI invia comandi al demone e il demone agisce su di essi per creare contenitori.

Il modello di Podman aiuta a risolvere alcune delle preoccupazioni relative alla sicurezza di Docker. La mancanza di un demone riduce notevolmente la superficie di attacco del contenitore. Se hai bisogno dell'accesso remoto, Podman espone un'API REST che ti consente di interagire con tutti i tipi di risorse supportati.

baccelli

Podman è dotato di caratteristiche uniche che a Docker mancano del tutto. In Podman, i contenitori possono formare "baccelli" che operano insieme. È simile al concetto di Kubernetes Pod.

Per creare un Pod, usa pod create comando:

podman pod create --name my-pod

I contenitori vengono aggiunti ai Pod includendo il --pod segnala con podman run :

podman run --pod my-pod --name image-1 my-image:latest
podman run --pod my-pod --name image-2 another-image:latest

I contenitori nel Pod possono essere gestiti in modo aggregato utilizzando podman pod comandi:

podman kill my-pod      # Kill all containers
podman restart my-pod   # Restart all containers
podman stop my-pod      # Stop all containers

Il concetto Pod è potente, in quanto ti consente di gestire più contenitori in aggregato. Puoi creare contenitori di app, come un frontend, un backend e un database, aggiungerli a un Pod e gestirli all'unisono.

Il Docker più vicino a questo è con Compose. L'uso di Compose richiede la scrittura di un docker-compose.yml file e usa il separato docker-compose binario. Podman ti consente di creare Pod utilizzando un comando senza uscire dal terminale.

Quando devi esportare la definizione di un Pod, Podman produrrà un manifest YAML compatibile con Kubernetes. Puoi prendere il manifest e applicarlo direttamente a un cluster Kubernetes. Ciò riduce il divario tra l'esecuzione di un container in fase di sviluppo e il suo lancio nell'infrastruttura di produzione.

podman generate kube

Contenitori senza radice

Podman supporta contenitori senza radici. Questo ti aiuta a bloccare la tua sicurezza impedendo ai container di essere eseguiti come root dell'host utente. Docker ora supporta la modalità rootless come opzione di configurazione del demone. Podman non aveva radici prima di Docker e pone una maggiore enfasi sul suo utilizzo.

Innanzitutto, installa slirp4netns :

yum install slirp4netns

Quindi, configura una quantità di spazi dei nomi di rete con ambito utente:

echo "user.max_user_namespaces=28633" > /etc/sysctl.d/userns.conf
sysctl -p /etc/sysctl.d/userns.conf

Questo comando abilita l'uso degli spazi dei nomi di rete senza essere root .

Ora sei pronto per eseguire un container senza radici! Connettiti al server come un normale utente. Avvia un nuovo contenitore con podman run . Verrà creato con l'UID del tuo account utente invece di root .

Oltre agli spazi dei nomi completamente senza root, podman ha come ambito l'utente corrente per impostazione predefinita. Le tue immagini e i tuoi contenitori sono archiviati nel $HOME del tuo utente cartella. Quando esegui podman ps o podman images , vedrai solo tuo contenuto invece di ogni risorsa nel sistema.

Conclusione

Podman è un runtime contenitore conforme a OCI che funziona senza un demone. La CLI implementa tutti i principali comandi Docker. Puoi passare facilmente a Podman o usarlo insieme a un'installazione Docker esistente.

A differenza di Docker, Podman ha un supporto di prima classe per la gestione di più container. Il modello Pod semplifica il lavoro con una serie di servizi. Puoi arrestare, riavviare ed eliminare tutti i contenitori associati utilizzando i comandi a livello di pod.

Podman è anche pronto ad aiutarti a passare ai servizi di orchestrazione dei container. La possibilità di esportare YAML compatibile con Kubernetes rende Podman una soluzione più vicina a molti ambienti di produzione containerizzati. Sviluppatori e operatori possono utilizzare lo stesso strumento per gestire i propri container, consentendo maggiore collaborazione e flessibilità.


Docker
  1. Che cos'è un server Web e come funziona un server Web?

  2. Come esportare e importare contenitori Docker

  3. Che cos'è Docker (e contenitori Linux?)

  4. Che cosa significa ${1+"[email protected]"} in uno script shell e in che cosa differisce da "[email protected]"?

  5. Come installare Docker ed eseguire Docker Container in Ubuntu

Cos'è Docker?

Che cos'è VDI e come funziona?

Cos'è Docker? Come funziona?

Che cos'è Docker Compose e come lo usi?

Come rimuovere i contenitori Docker

Come fermare i container Docker