1. Einführung in PodmanPodman 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 DockerDocker-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:
3. KompatibilitätDie 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 5. Grundlegende Operationen von PodmanInstallieren#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 LagerhausOffizielles 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 ausStarten 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 automatischAusfü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:
|
>>: Fallstudie zu MySQL-Berechtigungen und Datenbankdesign
Als grundlegendes Element einer Webseite sind Bil...
MAC installiert mysql8.0, der spezifische Inhalt ...
Inhaltsverzeichnis Vorwort 1. Installieren Sie sc...
Ⅰ. Problembeschreibung: Verwenden Sie CSS, um kon...
Inhaltsverzeichnis 1. Grundlegende Ereignisbehand...
Der Installationsprozess von VMware wird nicht de...
Heute habe ich mich mit der Migration eines Proje...
Einführung Ich habe schon einmal ein Problem fest...
Nachdem die Eingabe im Formulareingabefeld auf da...
Das Element UI-Tabelle verfügt nicht über eine in...
Kürzlich haben Studierende des User Experience-Tea...
CSS: 1. <link type="text/css" href=&q...
<br />Wenn wir über Navigation sprechen, geh...
Der HTML-Kopfteil enthält viele Tags und Elemente,...
Inhaltsverzeichnis 1. Hintergrund 2. Was ist eine...