Podman bootet den Container automatisch und vergleicht ihn mit Docker

Podman bootet den Container automatisch und vergleicht ihn mit Docker

1. Einführung in Podman

Podman war zuvor Teil des CRI-O-Projekts und wurde später in ein unabhängiges Projekt, libpod, ausgegliedert. Libpod ist ein Tool und eine Bibliothek zum Erstellen von Container-Pods. Podman ist eine daemonlose Container-Engine, die als Root-Benutzer oder im Rootless-Modus ausgeführt wird. Kurz gesagt bietet Podman eine Docker-CLI-Befehlszeile zum Verwalten von Containern.

2. Vorteile gegenüber Docker

Docker-Nachteil 1:

Wie wir alle wissen, belegt der Docker-Daemon mithilfe eines C/S-Modells fast 100 % der CPU-Ressourcen auf mehreren Kernen.

Podman-Vorteil 1:

Podman erfordert keinen Daemon-Prozess oder eine Root-Berechtigungsgruppe und verwendet den Benutzernamensraum, um Root-Vorgänge im Container zu simulieren, wobei das Fork/Exec-Modell übernommen wird.

Das Fork/Exec-Modell bietet gegenüber dem C/S-Modell folgende Vorteile:

  • Systemadministratoren wissen, wer einen Container gestartet hat
  • Verwenden Sie cgroup, um Podman einzuschränken. Die entsprechenden erstellten Container werden ebenfalls eingeschränkt.
  • Durch die Generierung von Systemd-Unit-Dateien können das Starten und Herunterfahren von Aufgaben verwaltet werden
  • Socket-Aktivierung, senden Sie den Socket von systemd zur Verwendung an den Podman-Container

3. Kompatibilität

Die meisten Funktionen von Docker sind mit Podman kompatibel und Aliase können auch zum Schreiben von Docker-Befehlen verwendet werden.

4. Priorität der Hintergrundservice-Unit-Dateien

/usr/lib/systemd/user : Die niedrigste Priorität, wird von der gleichnamigen Einheit mit höherer Priorität überschrieben ~/.local/share/systemd/user

/etc/systemd/user : Global gemeinsam genutzte Einheit[en] auf Benutzerebene

~/.config/systemd/user : höchste Priorität

5. Grundlegende Operationen von Podman

Installieren

#Standard-CentOS-Quelle [root@slave02 ~]# yum -y module install container-tools #Auf Modul basierendes Containertool [root@slave02 ~]# yum -y install podman-docker #Docker-kompatibles Paket installieren (optional)

Version

[root@slave02 ~]# podman -v
Podman Version 3.3.0-dev

Lagerhaus

Offizielles Repository: registry.access.redhat.com

Repository von Drittanbietern: docker.io

Privates Repository: registry.lab.example.com

Befehlshilfe

[root@slave02 ~]# podman Hilfe|head -15
Verwalten von Pods, Containern und Images
Verwendung:
  podman [Optionen] [Befehl]
Verfügbare Befehle:
  Anhängen An einen laufenden Container anhängen
  Auto-Update Automatisches Update von Containern gemäß ihrer Auto-Update-Richtlinie
  build Erstellen Sie ein Image mit Anweisungen aus Containerdateien
  commit Neues Image basierend auf dem geänderten Container erstellen #Neuen Container basierend auf dem geänderten Container erstellen container Container verwalten
  cp Kopieren von Dateien/Ordnern zwischen einem Container und dem lokalen Dateisystem
  create Einen Container erstellen, aber nicht starten
  diff Zeigt die Änderungen am Dateisystem des Objekts an
  Veranstaltungen Podman-Veranstaltungen anzeigen
....

Bildbeschleuniger

Ändern Sie die Konfigurationsdatei: /etc/containers/registries.conf

Hinweis: Es darf nicht das Format httpds//:url enthalten.

[root@slave02 ~]# cp /etc/containers/registries.conf /backup/registries.conf.back #Sichern [root@slave02 ~]# vim /etc/containers/registries.conf
unqualified-search-registries = ["docker.io"] # Unqualifiziertes Suchregister [[registry]]
Präfix = "docker.io"
location = "x" #x ist die Ali-Beschleunigungsspiegeladresse

Ziehen Sie das Bild

[root@slave02 ~]# podman zieht nginx

6. Führen Sie einen Webcontainer aus

Starten Sie einen Webcontainer im Hintergrund und greifen Sie auf den Containerinhalt zu

#HTML-Seiteninhalt vorbereiten[root@192 ~]# cat /opt/webhtml/index.html 
Gehen Sie Ihren eigenen Weg, sehen Sie sich Ihre eigene Landschaft an, übertreffen Sie andere, ohne selbstgefällig zu sein, und werden Sie übertroffen, ohne den Ehrgeiz zu verlieren.
#Führen Sie einen Daemon-Webcontainerprozess aus und ordnen Sie den Inhalt des Verzeichnisses /opt/webhtml dem Verzeichnis /usr/share/nginx/html des Containers zu, in dem die Webseiten gespeichert sind [root@192 ~]# podman run -d --name web -p 8888:80 -v /opt/webhtml:/usr/share/nginx/html nginx
3528e6d5148bcf980f0df5708a82419d3485a33d1d16d722db3e880cc103cd2c
[root@podman ~]# curl 192.168.136.129:8888
Gehen Sie Ihren eigenen Weg, sehen Sie sich Ihre eigene Landschaft an, übertreffen Sie andere, ohne selbstgefällig zu sein, und werden Sie übertroffen, ohne den Ehrgeiz zu verlieren.
#Container-IP
[root@podman ~]# podman inspect web|grep IP-Adresse
"IP-Adresse": "10.88.0.6",
"IP-Adresse": "10.88.0.6",
#IP des Host-Rechners
[root@podman ~]# ip r
192.168.136.0/24 dev ens33 proto Kernel Bereich Link src 192.168.136.129 Metrik 100 
#Da eine Portbindung durchgeführt wird, können Sie direkt über curl 192.168.136.129:8888 darauf zugreifen

Rufen Sie den Backend-Webcontainer auf und überprüfen Sie den Dienststatus

[root@podman ~]# podman exec -it web bash
root@3528e6d5148b:/# Dienst-Nginx-Status
[ ok ] nginx läuft. #Läuft

Container-Service-Inhalt ändern

#Ändern Sie den Hostcomputer /opt/webhtml/index.html [root@podman ~]# cat /opt/webhtml/index.html 
Gehen Sie Ihren eigenen Weg, sehen Sie sich Ihre eigene Umgebung an, übertreffen Sie andere, ohne selbstgefällig zu sein, und werden Sie übertroffen, ohne den Ehrgeiz zu verlierenRHCAS
RHCE RHCA
#Zugriff [root@podman ~]# curl 192.168.136.129:8888
Gehen Sie Ihren eigenen Weg, sehen Sie sich Ihre eigene Umgebung an, übertreffen Sie andere, ohne selbstgefällig zu sein, und werden Sie übertroffen, ohne den Ehrgeiz zu verlierenRHCAS 
RHCE RHCA
#Geben Sie den Container ein, um zu prüfen, ob der Inhalt geändert wurde [root@podman ~]# podman exec -it web bash
root@3528e6d5148b:/# cat /usr/share/nginx/html/index.html 
Gehen Sie Ihren eigenen Weg, sehen Sie sich Ihre eigene Umgebung an, übertreffen Sie andere, ohne selbstgefällig zu sein, und werden Sie übertroffen, ohne den Ehrgeiz zu verlierenRHCAS 
RHCE RHCA

Anhalten und Löschen von Containern

#Pause [root@podman ~]# podman stop web
Web
[root@podman ~]# podman ps -a
CONTAINER ID BILD BEFEHL ERSTELLT STATUS PORTS NAMEN
3528e6d5148b docker.io/library/nginx:latest nginx -g daemon o... vor 25 Minuten Beendet (0) vor 16 Sekunden 0.0.0.0:8888->80/tcp web
#löschen [root@podman ~]# podman rm web
3528e6d5148bcf980f0df5708a82419d3485a33d1d16d722db3e880cc103cd2c
#Oder löschen Sie den laufenden Container zwangsweise [root@podman ~]# podman rm -f web
3528e6d5148bcf980f0df5708a82419d3485a33d1d16d722db3e880cc103cd2c

7. Webcontainer-Einstellungen starten automatisch

Ausführen eines Webcontainers im Hintergrund

[root@podman ~]# podman run --name web -d -p 8080:80 -v /opt/webhtml:/usr/shar/nginx/html nginx
910db3ab6bd1ef18e5fd0afe1844912f0b89334b7b8ab758353a948a1b55282a

Basierend auf dem Webcontainer, im /etc/systemd/system mit normaler Priorität

Erstellen einer Service-Unit-Datei

[root@192 ~]# cd /etc/systemd/system/
[root@podman-Benutzer]# podman generate systemd --
--container-prefix (Systemd-Unit-Namenspräfix für Container)
--files {.service-Dateien generieren, statt auf die Standardausgabe zu drucken}
--format (Druckt die erstellten Einheiten im angegebenen Format (json)) #Druckt Unit-Dateien im angegebenen Format --name (Verwendet Container-/Pod-Namen statt IDs) #Erstellt einen neuen Container, statt einen vorhandenen zu verwenden --new (Erstellt einen neuen Container, statt einen vorhandenen zu starten) # (Header-Generierung überspringen)
--no-header (Headergenerierung überspringen)
--pod-prefix (Systemd-Unit-Namenspräfix für Pods)
--restart-policy (Systemd-Neustartrichtlinie)
--separator (Trennzeichen für Systemd-Unit-Namen zwischen Name/ID und Präfix)
--time (Zeitüberschreitung stoppen)
[root@192 system]# podman generiert systemd --name web --files --new
/etc/systemd/system/container-web.service

Zeigen Sie die generierte Unit-Datei an

[root@192 system]# cat container-web.service 
# container-web.service
# automatisch generiert von Podman 3.3.0-dev # Di., 17. Aug. 2021, 13:03:13 CST # Dienstag, 17. August 2021, 13:03:13 CST                                                            
[Unit] #Unit Beschreibung=Podman container-web.service #Beschreibung Dokumentation=man:podman-generate-systemd(1) #Hilfe und generiertes System Wünsche=network-online.target #Netzwerk Nach=network-online.target
RequiresMountsFor=%t/containers # Überspringe das vorherige, wenn es nicht wichtig ist [Service]
Umgebung=PODMAN_SYSTEMD_UNIT=%n                   
Restart=on-failure #Neustart bei Fehler TimeoutStopSec=70 #Timeout ExecStart=/usr/bin/podman run --sdnotify=conmon --cgroups=no-conmon --rm --replace --name web -d -p 8080:80 -v /opt/webhtml:/usr/shar/nginx/html nginx #Die Ausführung beginnt mit /usr/bin/podman, wo der gerade erstellte Container ausgeführt wird Type=notify
NotifyAccess=alle
[Installieren]
WantedBy=Mehrbenutzer.Ziel Standard.Ziel

Löschen Sie den Container jetzt

[root@podman ~]# podman rm web
910db3ab6bd1ef18e5fd0afe1844912f0b89334b7b8ab758353a948a1b55282a
[root@podman ~]# podman ps -a
CONTAINER ID BILD BEFEHL ERSTELLT STATUS PORTS NAMEN

Automatischen Start einrichten

[root@192 ~]# systemctl daemon-reload 
[root@192 ~]# systemctl aktivieren --jetzt container-web.service 
Symlink /etc/systemd/system/multi-user.target.wants/container-web.service → /etc/systemd/system/container-web.service erstellt.
Symlink /etc/systemd/system/default.target.wants/container-web.service → /etc/systemd/system/container-web.service erstellt.
[root@192 Benutzer]# podman ps -a
CONTAINER ID BILD BEFEHL ERSTELLT STATUS PORTS NAMEN
b0c7709cb00e docker.io/library/nginx:latest nginx -g daemon o... vor 15 Sekunden Vor 16 Sekunden aktiv 0.0.0.0:8080->80/tcp web

Das Einrichten eines Containers im Rootless-Modus ähnelt der obigen Methode.

Verwenden Sie den Befehl systemctl mit --user

#Sie müssen den Befehl loginctl enable-linger ausführen, damit der Benutzerdienst automatisch gestartet wird, wenn der Server startet [containers@serverb ~]$ loginctl enable-linger 

Oben finden Sie detaillierte Informationen zum Implementierungsprozess des Podman-Bootens und des selbststartenden Containers. Weitere Informationen zum Podman-Booten und zum selbststartenden Container finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

Das könnte Sie auch interessieren:
  • Wird der veraltete Docker durch Podman ersetzt?
  • Spezifische Verwendung des Podman-Containertools

<<:  Die Erfahrungen aus dem Vergleich und der Analyse der Homepages inländischer Social-Networking-Websites werden mit allen geteilt (Bild)

>>:  Fallstudie zu MySQL-Berechtigungen und Datenbankdesign

Artikel empfehlen

Tools zur Bildoptimierung für Webseiten und Tipps zur Verwendung

Als grundlegendes Element einer Webseite sind Bil...

MySQL 8.0.11 Installationshandbuch für Mac

MAC installiert mysql8.0, der spezifische Inhalt ...

Vue-CLI3.x stellt Projekte automatisch auf dem Server bereit

Inhaltsverzeichnis Vorwort 1. Installieren Sie sc...

Vue3 Vue-Ereignisbehandlungshandbuch

Inhaltsverzeichnis 1. Grundlegende Ereignisbehand...

Schritte zum Übertragen von Dateien und Ordnern zwischen zwei Linux-Servern

Heute habe ich mich mit der Migration eines Proje...

Werbefähigkeiten im Baidu Union-Umfeld (grafisches Tutorial)

Kürzlich haben Studierende des User Experience-Tea...

Referenzschreiben im JS- und CSS-Stil

CSS: 1. <link type="text/css" href=&q...

Navigationsdesign und Informationsarchitektur

<br />Wenn wir über Navigation sprechen, geh...

Detaillierte Einführung in den HTML-Head-Tag

Der HTML-Kopfteil enthält viele Tags und Elemente,...

Implementierung der virtuellen React-Liste

Inhaltsverzeichnis 1. Hintergrund 2. Was ist eine...