GNU/Linux >> LINUX-Kenntnisse >  >> Panels >> Docker

Was ist Podman und wie unterscheidet es sich von Docker?

Podman ist eine Container-Engine, die mit der OCI-Container-Spezifikation kompatibel ist. Podman ist Teil von RedHat Linux, kann aber auch auf anderen Distributionen installiert werden.

Da es OCI-konform ist, kann Podman als Drop-In-Ersatz für die bekanntere Docker-Laufzeit verwendet werden. Die meisten Docker-Befehle können direkt in Podman-Befehle übersetzt werden.

Hier sehen Sie, wie sich die beiden Laufzeiten stapeln.

Was ist eine Laufzeit?

Für viele Leute ist ein „Container“ immer noch ein „Docker-Container“. Dies ist keine genaue Darstellung des aktuellen Container-Ökosystems. Docker erstellt OCI-Container-Images, die mit anderen kompatiblen Laufzeiten verwendet werden können. Kubernetes ist ein Beispiel, während Podman ein anderes ist.

Infolgedessen haben Podman und Docker überlappende Kernfunktionen. Beide erzeugen Images, die der andere zum Ausführen von Containern verwenden kann. Die beiden Laufzeiten fügen dann ihre eigenen Spezialisierungen zusätzlich zu den grundlegenden Containerisierungsfunktionen hinzu.

So installieren Sie Podman

Wenn Sie RedHat Linux verwenden, finden Sie Podman in den extras Repository. Verwenden Sie subscription-manager um das Repository hinzuzufügen. Sie können dann yum verwenden um Podman zu installieren.

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

Die meisten anderen gängigen Linux-Distributionen enthalten Podman ebenfalls in ihren Standard-Repositorys. Sie können apt install podman , dnf install podman oder pacman -S podman um es zu installieren.

Arbeiten mit Containern und Images

Die CLI von Podman ist bewusst an der von Docker ausgerichtet. Das bedeutet, dass Sie vertraute Docker-Befehle verwenden können, um mit Podman-Containern zu interagieren:

podman pull my-image:latest

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

podman ps

podman rm my-container

Podman sollte Docker-Benutzern sofort vertraut sein. Sie könnten docker aliasieren zu podman und im täglichen Gebrauch keinen Unterschied feststellen. Natürlich sind jedoch nicht alle Funktionen verfügbar – der Versuch, Docker Swarm-Befehle zu verwenden, löst einen Fehler aus, da Podman nichts Äquivalentes zu Swarm hat.

Was ist anders an Podman?

Obwohl es sich Docker ähnlich anfühlt, weist Podman einige Unterschiede auf. Das erste und wohl bedeutendste ist seine Architektur. Podman ist dämonlos – Es gibt keinen langlebigen Prozess zur Verwaltung Ihrer Container.

Wenn Sie einen podman ausführen Befehl, sind Sie direkt mit dem Prozess verbunden, der Ihre Container startet und Ihre Bilder abruft. Dockers CLI ist auf eine Verbindung zum Docker-Daemon angewiesen. Die CLI sendet Befehle an den Daemon, und der Daemon verarbeitet sie dann, um Container zu erstellen.

Das Modell von Podman hilft, einige der Bedenken in Bezug auf die Docker-Sicherheit auszuräumen. Das Fehlen eines Daemons reduziert die Angriffsfläche des Containers erheblich. Wenn Sie Fernzugriff benötigen, stellt Podman eine REST-API bereit, mit der Sie mit allen unterstützten Ressourcentypen interagieren können.

Pods

Podman verfügt über einzigartige Funktionen, die Docker vollständig fehlen. In Podman können Container „Pods“ bilden, die zusammenarbeiten. Es ähnelt dem Kubernetes-Pod-Konzept.

Um einen Pod zu erstellen, verwenden Sie pod create Befehl:

podman pod create --name my-pod

Container werden zu Pods hinzugefügt, indem --pod eingefügt wird Flag mit podman run :

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

Container im Pod können mithilfe von podman pod aggregiert verwaltet werden Befehle:

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

Das Pod-Konzept ist leistungsstark, da es Ihnen ermöglicht, mehrere Container aggregiert zu verwalten. Sie können App-Container wie ein Front-End, ein Back-End und eine Datenbank erstellen, sie zu einem Pod hinzufügen und gemeinsam verwalten.

Am nächsten kommt Docker dem mit Compose. Die Verwendung von Compose erfordert das Schreiben einer docker-compose.yml -Datei und verwenden Sie das separate docker-compose binär. Mit Podman können Sie Pods mit einem Befehl erstellen, ohne das Terminal zu verlassen.

Wenn Sie die Definition eines Pods exportieren müssen, erstellt Podman ein Kubernetes-kompatibles YAML-Manifest. Sie können das Manifest nehmen und es direkt auf einen Kubernetes-Cluster anwenden. Dadurch wird die Lücke zwischen dem Ausführen eines Containers in der Entwicklung und seiner Einführung in der Produktionsinfrastruktur verringert.

podman generate kube

Rootless-Container

Podman unterstützt Rootless-Container. Dies hilft Ihnen, Ihre Sicherheit zu schützen, indem verhindert wird, dass Container als root des Hosts ausgeführt werden Benutzer. Docker unterstützt jetzt den Rootless-Modus als Daemon-Konfigurationsoption. Podman war vor Docker wurzellos und legt einen größeren Wert auf dessen Verwendung.

Installieren Sie zuerst slirp4netns :

yum install slirp4netns

Konfigurieren Sie als Nächstes eine Reihe von benutzerspezifischen Netzwerk-Namespaces:

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

Dieser Befehl ermöglicht die Verwendung von Netzwerk-Namespaces, ohne root zu sein .

Jetzt sind Sie bereit, einen Rootless-Container auszuführen! Verbinden Sie sich als normaler Benutzer mit dem Server. Starten Sie einen neuen Container mit podman run . Es wird mit der UID Ihres Benutzerkontos anstelle von root erstellt .

Neben vollständig wurzellosen Namespaces, podman ist standardmäßig auf den aktuellen Benutzer beschränkt. Ihre Bilder und Container werden im $HOME Ihres Benutzers gespeichert Mappe. Wenn Sie podman ps ausführen oder podman images , sehen Sie nur Ihre Inhalt statt jeder Ressource auf dem System.

Schlussfolgerung

Podman ist eine OCI-konforme Containerlaufzeit, die ohne Daemon funktioniert. Die CLI implementiert alle wichtigen Docker-Befehle. Sie können ganz einfach zu Podman wechseln oder es zusammen mit einer bestehenden Docker-Installation verwenden.

Im Gegensatz zu Docker bietet Podman erstklassige Unterstützung für die Verwaltung mehrerer Container. Das Pod-Modell erleichtert die Arbeit mit einem Stapel von Diensten. Sie können alle zugehörigen Container stoppen, neu starten und löschen, indem Sie Befehle auf Pod-Ebene verwenden.

Podman ist auch bereit, Ihnen beim Wechsel zu Container-Orchestrierungsdiensten zu helfen. Durch die Möglichkeit, Kubernetes-kompatibles YAML zu exportieren, passt Podman besser zu vielen containerisierten Produktionsumgebungen. Entwickler und Betreiber können das gleiche Tool verwenden, um ihre Container zu verwalten, was mehr Zusammenarbeit und Flexibilität ermöglicht.


Docker
  1. Was ist Podman und wie installiere ich Podman unter Linux?

  2. So exportieren und importieren Sie Docker-Container

  3. Was ist Docker (und Linux-Container?)

  4. Was bedeutet ${1+„[email protected]“} in einem Shell-Skript und wie unterscheidet es sich von „[email protected]“?

  5. Was ist containerd und in welcher Beziehung steht es zu Docker und Kubernetes?

Was ist Docker?

Was ist VDI und wie funktioniert es?

Was ist Docker? Wie funktioniert es?

Was ist Docker Compose und wie wird es verwendet?

So entfernen Sie Docker-Container

So stoppen Sie Docker-Container