Transkripte
1. KURSEINFÜHRUNG: Hallo und willkommen zum Kurs
Containermanagement mit Pac-Man. Mein Name ist Andre
Balance und ich bin hier um Ihnen zu helfen,
die Vorteile der
Containerisierung zu erlernen und zu erfahren,
wie Sie
Container mit dem Pokemon
Container-Management-Tool erstellen und verwalten können , das ich gerne
angeben möchte der Vorstandsmann ist Docker extrem ähnlich. Der hier gewonnene Wissen kann auch bei der Arbeit
mit Docker
genutzt werden . Lassen Sie uns den Kurs jetzt damit beginnen Ihnen etwas über mich selbst zu
erzählen. Ich bin ein von Red Hat zertifizierter Ingenieur und auch ein
Spezialist für die Arbeit mit beiden Containern
. Kubernetes ist mein zweites
Fachgebiet ist InfoSec. Ich bin auch CompTIA Security Plus 35 Meilen nach CISOs zertifiziert. Jetzt, wo Sie
ein wenig über mich wissen,
sehen Sie, was wir in diesem Kurs
behandeln werden. Lassen Sie uns einen kurzen Überblick darüber geben, was wir in diesem
Kurs behandeln sollten. werden wir etwas über
Container, ihre Architektur,
in ihren Vorteilen lernen Danach werden wir etwas über
Container, ihre Architektur,
in ihren Vorteilen lernen, worauf wir näher auf praktische Bereiche eingehen
werden. Und wir werden
Container-Register besprechen. Sie sind und wie man
sie in Pod Man konfiguriert. Als Nächstes werden wir uns mit der
Verwaltung von Containern befassen und sehen, wie Containerdienste
erstellt werden können. Jetzt können wir
Container gut verwalten, wenn wir auch Images verwalten können. Das werden wir also im nächsten Modul
tun. Container haben standardmäßig
kurzlebigen Speicher. Wenn wir also möchten, dass unsere Änderungen über den
Tod eines Containers hinaus
bestehen bleiben, müssen
wir verstehen,
wie man Containern Persistenzspeicher
zuweist. Und das werden wir
im fünften Modul behandeln. Im sechsten sieben Modul werden
wir uns auf
Container Networking konzentrieren, wo wir etwas über die
Port-Bindung und die Netzwerkerstellung lernen . Wie heute werden wir diesen
Kurs beenden, indem wir lernen, wie wir mithilfe von Docker-Dateien und
Arbeitsverzeichnissen
unsere eigenen
Container-Images erstellen mithilfe von Docker-Dateien und
Arbeitsverzeichnissen
unsere eigenen
Container-Images können. Jetzt, wo wir einen
ziemlich guten Überblick
darüber haben , was wir behandeln werden,
fangen wir an.
2. Container erklärt: Jetzt, mit unserem ersten Modul, werden
wir ein wenig
über Container sprechen, was sie sind und welche
Vorteile die Containerisierung bietet. Wir beenden dieses
Modul, indem wir
eine Laborumgebung einrichten , in der wir alle unsere praktischen Übungen
für die nächsten Module
ausführen können . Also
lasst uns ohne weitere Umschweife loslegen. Schauen wir uns nun ein wenig an,
wie Container funktionieren. Softwareanwendungen
hängen jetzt von Systembibliotheken, Konfigurationsdateien
oder Diensten ab, die die
Laufzeitumgebung bereitstellt. Darüber hinaus
ist die
Laufzeitumgebung für eine Softwareanwendung in
einem Betriebssystem installiert , das
entweder auf einem physischen Host
oder einer virtuellen Maschine ausgeführt entweder auf einem physischen Host
oder einer virtuellen Maschine Administratoren installieren die
Anwendung Abhängigkeiten
auf diesem Betriebssystem. Der größte Nachteil herkömmlicher bereitgestellter
Softwareanwendungen besteht darin, dass diese Abhängigkeiten mit der
Laufzeitumgebung
verwoben sind . Eine Anwendung erfordert möglicherweise
ältere oder neuere Versionen
einer unterstützenden Software und der Software, die vom Betriebssystem
bereitgestellt wird. An dieser Stelle kommen
Container ins Spiel. Container ist eine Gruppe von einem oder mehreren Prozessen, die vom
Rest des Systems
isoliert sind . Stellen Sie sich das wie einen physischen
Versandcontainer vor. Versandcontainer sind eine
Standardmethode zum Verpacken und Versenden. Es wird beschriftet, geladen, entladen und in einer einzigen Box
von einem Ort
zum anderen transportiert . Inhalt
der Behälter ist
vom Inhalt
anderer Behälter isoliert , sodass sie
sich nicht gegenseitig beeinflussen. Sie sind also isoliert und
funktionieren unabhängig. Was sind also die Eigenschaften
eines Containers? Nun, sie laufen direkt auf
dem Host-Betriebssystem und teilen diese Ressourcen mit allen Containern auf diesem System. Sie haben den Host-Kernel geteilt. Der Kernel isoliert
die
Anwendungsprozesse vom
Rest des Systems. Sie benötigen viel weniger
Ressourcen als virtuelle Maschinen, sodass sie schneller
gestartet und bereitgestellt werden können. Und sie beinhalten alle
Abhängigkeiten wie System- und Programmierabhängigkeiten
sowie Konfigurationseinstellungen. Unabhängig davon, wo
Sie sie bereitstellen, verhalten
sie sich gleich. Nachdem wir ein wenig
über Container-Architektur verstanden haben , schauen wir uns einige nützliche Begriffe an. Container ist ein
Prozess oder eine Gruppe von Prozessen, die ein
Image mit Einschränkungen ausführen. Image ist ein Paket, das
alle Anforderungen zur Ausführung
dieser oder jener Prozesse enthält alle Anforderungen zur Ausführung . Eine Registrierung ist ein Ort, an dem Bilder gespeichert
und abgerufen werden können. Old Man ist das
Container-Management-Tool, dem wir
sowohl Images als auch
Container und
deren Interaktion verwalten . Eine weitere beliebte
Alternative ist Docker. Und der Pod besteht aus einem oder
mehreren Containern, was eine
einzelne Anwendung darstellt. Schauen wir uns also ein wenig die
Vorteile der Containerisierung an. Erstens haben wir Portabilität. Ein Anwendungscontainer erstellt ein ausführbares Softwarepaket vom Host-Betriebssystem
abstrahiert wird. Daher ist es in keiner Weise abhängig oder
an das Betriebssystem gebunden, wodurch es portabel wird und konsistent
und einheitlich auf
jeder Plattform oder Cloud ausgeführt werden kann .
Dann haben wir Geschwindigkeit, da kein Betriebssystem zum Booten vorhanden ist. Das bedeutet auch, dass die
Startzeit sehr niedrig ist. Die Nerven sind auch sehr effizient, wenn die
Software, die in
einer containerisierten
Umgebung ausgeführt wird ,
den Betriebssystemkern des Hostcomputers teilt . Entwickler können die
App-Layer über Container hinweg gemeinsam nutzen. Darüber hinaus haben Container von Natur aus
eine geringere Kapazität als virtuelle Maschinen, die
minimale Startzeiten erfordern, sodass Entwickler mehr Container auf
derselben Rechenkapazität
ausführen können,
ist eine virtuelle Maschine. Folglich führt dies zu einer
höheren Servereffizienz und reduziert die damit verbundenen
Server- und Lizenzkosten. Und schließlich, wie bereits
erwähnt, weil es kein Betriebssystem gibt haben
beide Container auch weniger Overhead. Wir verstehen die
Container-Architektur und die Vorteile der
Containerisierung. Richten Sie die Laborumgebung ein. Zunächst werden wir die Voraussetzungen
für
die Einrichtung des Labors durchgehen . Danach schauen wir uns
die Befehle an, die wir ausführen sollten. Zuletzt werden wir eine
kurze Demo machen, um
unsere Laborumgebung zum
Laufen zu bringen. Voraussetzungen angeht, brauchen
wir jetzt einen Host, auf dem
Red Hat Enterprise Linux
Version 8 oder höher läuft . Der Host muss mit dem Internet
verbunden sein. Es benötigt also eine aktive
Internetverbindung, die wir sowohl Birdman- als
auch Container-Images
herunterladen können, die an unseren Host
angehängt sind. Wir benötigen eine Beschreibung für Self-Support oder
Entwickler. Das bedeutet also, dass wir
ein Entwicklerkonto
bei Red Hat erstellen müssen . Zusätzlich wird empfohlen, dass wir auch ein Konto in
einem Container-Repository haben , von dem wir unsere Images beziehen, wie Docker oder Clay. Das ist aber nicht verpflichtend. Schauen wir uns nun die
Befehle an, die wir zum Einrichten unserer
Laborumgebung
benötigen. Es ist also eigentlich nicht
so kompliziert. Es gibt nur drei Befehle
, die wir ausführen müssen. Registrieren Sie sich für den ersten Tag des
Abonnement-Managers
, der
unser System mit
unserem Red Hat-Konto
und Passwort registriert . Danach haben wir den
Abonnementmanager minus Auto
angehängt, wodurch das
Abonnement an unseren Host angehängt wird. Und schließlich werden wir den
Befehl yum
install container tools ausführen, um das Poor-Man-Container-Management-Tool aus
den Repositorys von
Red Heads Repositorys zu installieren Poor-Man-Container-Management-Tool aus
den Repositorys von , nachdem wir unseren Host erfolgreich
registriert
haben. Lassen Sie uns nun all diese
Befehle verwenden und
unsere Laborumgebung in unserer
kurzen Demo einrichten . Zuerst verwenden wir
den Befehl Subscription Manager
registered , um
mein System bei Red Hat zu registrieren. Ich gebe meine Red
Hat ID und auch mein Passwort ein. Dann muss ich nur noch ein bisschen warten. Wie Sie sehen können,
lautet
die Ausgabenachricht , dass das System
registriert wurde und der Systemname localhost dot lokale Domäne
ist. Ich werde den Befehl „Subscription
Manager attach“
minus „ auto“ verwenden, um
mein Abonnement an meinen Host anzuhängen. Dies kann ein bisschen dauern, aber nachdem dies erledigt ist, habe ich Zugriff auf Read Heads Repositories kann auch eine Popup-Nachricht
sehen, die
besagt , dass
die Registrierung ist erfolgreich und mein Status
ist im Schlaf abonniert. Ich werde den
Befehl yum install
container tools verwenden , um
das Container-Management-Tool Pac-Man
aus den Repositorys von red
heads zu installieren das Container-Management-Tool . Sie können sehen, dass
es erfolgreich
heruntergeladen wurde und abgeschlossen ist. Jetzt. Herzlichen Glückwunsch.
Habe jetzt eine funktionierende, laufende Laborumgebung.
3. Container: Zuvor haben wir
unsere Laborumgebung eingerichtet. Jetzt können wir also über
Container-Register sprechen. Wir werden zunächst einen
theoretischen
Überblick darüber geben, was
Container-Register sind. Und dann werden wir zur
Demo übergehen, wo wir unsere eigene
benutzerdefinierte Container-Registrierung erstellen werden. Also
lasst uns ohne weitere Umschweife loslegen. Also was sind unsere
Container-Register? Um es einfach auszudrücken, es gibt ein
Repository mit Bildern. Eine Container-Registry
ist eine Bank zum Speichern und Abrufen von
Container-Images. Ein Entwickler lädt
Container-Images eine Container-Registry hoch. Sie können diese
Images dann von einer Registrierung auf
ein lokales System herunterladen , um auf diesen Images
basierende
Containerdienste auszuführen und zu erstellen . Es gibt zwei Arten von
Registern, private oder öffentliche. Sie können eine öffentliche
oder eine private Registrierung verwenden, bei Ihre Organisation die Quelle Ihrer Container-Images
kontrolliert der
Ihre Organisation die Quelle Ihrer Container-Images
kontrolliert, insbesondere aus
Sicherheitsgründen. Um Bilder
von den meisten Registern herunterzuladen, benötigen
Sie zunächst ein Konto bei diesen Registern
und können sich mit diesem Register
anmelden dem alten
Man-Container-Management-Tool genauer gesagt der
pot-man-Login-Befehl. Jetzt wird die
Standardkonfigurationsdatei für
Container-Register
in der
Slash-ETC-Schrägstrich-Container-Schrägstrich-Datei registry.com gelernt . Jetzt haben beide Menschen die
Fähigkeit, rücksichtslose Container zu betreiben. Das heißt, wir können eine
registry.com-Datei in der Startseite
des
Benutzerpunktkonfigurations-Slash-Container-Verzeichnisses erstellen . Dies wird Vorrang vor dem allgemeinen haben,
der in Schrägstrich,
ETC Slash Container
Slash registries.com
vorhanden ist. Jetzt haben
wir in der
Container-Registrierungsdatei diesen Abschnitt zur
Suche nach Registern. Im Abschnitt zur
Registrierungssuche ist
eine Liste der durchsuchbaren
Registrierungen konfiguriert. Wir haben auch die Register
in einem sicheren Bereich. Diese Register sind nicht
durch TLS-Verschlüsselung geschützt. Jetzt, da wir
einen guten theoretischen
Überblick über Register haben , schauen wir uns einige praktische
und nützliche Pokemon-Befehle für die Arbeit mit Registern an. Zuerst haben wir den Befehl
old man login
mit dem Befehl boat man
login Wie wir im Beispiel sehen können, werde
ich mich mit einem
Benutzernamen und einem Passwort
bei my registered.com anmelden . Dann haben wir den Befehl pod
man info uns Informationen über die Konfiguration von PODD man gibt, einschließlich durchsuchbarer Register. Und schließlich haben wir den Suchbefehl des
Hafenmannes, den Punktmann-Suchbefehl. Ich kann meine
Register durchgehen und
nach einem bestimmten
Schlüsselwort wie HTTPD suchen . Bei der PacMan-Suche durchsucht
HTTPD beispielsweise Register nach Container-Images, die das HTTPD-Schlüsselwort
enthalten. also ohne weiteres Gehen
wir also ohne weiteres in
die Demo und setzen unser erlerntes Wissen
in die Praxis um. Zuerst werde ich VIM verwenden,
um Ihnen den Schrägstrich,
ETC-Schrägstrich-Container-Schrägstrich
registered.com-Datei zu zeigen . Hier haben wir die
uneingeschränkten Suchregister. Dies sind die Register,
durch die der Podman sucht. Wenn ich nach einem Bild suche, haben
wir hier die
Registry.CentOS.org, quiet.docker.io usw. Jetzt werde ich
dieses spezielle Dokument beenden. Ich werde einen neuen Pfad
mit MK D oder Command erstellen. Und mein neuer Pfad werden Slash-Container für
Punktkonfigurationen sein. Jetzt werde ich die
Slash-ETC-Schrägstrich-Container-Schrägstrich-registered.com-Datei in
den
Slash-Container-Pfad der Punktkonfiguration kopieren Slash-ETC-Schrägstrich-Container-Schrägstrich-registered.com-Datei in . Ich werde den gleichen
Namen behalten, registry.com. Jetzt werde ich diese bestimmte
Datei bearbeiten, da ich nur möchte, dass mein
Pod-Man-Container-Management-Tool registry.access.redhead.com durchsucht. Also werde ich
alle Register löschen , die ich nicht verwenden möchte, wie Registry dots, CentOS.org, quiet.io
und docker.io. Dann werde ich dieses Dokument speichern und
beenden. Jetzt führe ich einen
PubMed-Suchbefehl mit dem Begriff HTTPD aus, um zu testen, ob meine
Registries in Ordnung sind. Und wir können deutlich sehen
, dass wir hier Ergebnisse haben. Jetzt werde ich den Bildschirm leeren und den Befehl port man info
verwenden, um Informationen über unsere
Pac-Man-Konfiguration zu erhalten. Und wir können hier deutlich sehen, dass die durchsuchbaren Register
nur registry.access.com sind. Also der einzige, den ich in
der Punktkonfiguration übrig habe Slash-Container slash-registries.com-Datei. Unsere Demo hat also perfekt funktioniert. Vielen Dank und wir
sehen uns im nächsten Modul.
4. Verwaltung von Containern: Zuvor haben wir von Container-Registern
erfahren. In diesem Modul lernen wir nun, wie
Sie
Container mithilfe des
Pod-Man-Container-Management-Tools verwalten . Dies wird ein sehr
praktisches Modul sein und wir werden dieses
Modul mit der Demo beenden all unser
erlerntes Wissen in die Praxis umsetzen. Also
lasst uns ohne weitere Umschweife loslegen. In Bezug auf nützliche Befehle haben
wir zuerst den Befehl port
man pool, der eine Registry und
dann ein Image innerhalb
dieses Projektarchivs
angibt . Dadurch wird das
Bild auf den lokalen Host heruntergeladen. Danach haben wir
den
Befehl Pokemon inspect , der ein
lokal gespeichertes Bild angibt. Dadurch erhalten wir
detaillierte
Informationen zu diesem Container-Image. Mit dem Befehl pod man
images können
wir eine Liste der lokal
gespeicherten Bilder abrufen und mit dem Poor-Man-RMI-Befehl, der einen Image-Namen
angibt, können
wir ein
lokal gespeichertes Bild entfernen. Bevor wir uns nun mit
laufenden Containern
befassen, geben wir einen kurzen Überblick über die Zustände, in denen sich ein
Container befindet. Großartig, es bedeutet,
dass unser Container erstellt wurde, aber nicht gestartet wird, bedeutet, dass
ein Container mit all
seinen Prozessen
läuft. Stopp bedeutet, dass ein Container angehalten wurde und auf den Start eines Signals
wartet. Ihre Prozesse
warten auf dasselbe. Post bedeutet, dass ein Container und
seine Prozesse angehalten wurden ,
während dies bedeutet, dass alle seine Prozesse beendet wurden. Schauen wir uns nun
einige nützliche Befehle
zum Ausführen von Containern an ,
die das
Poor-Man-Container-Management-Tool
mit dem Podium und dem Befehl run verwenden die das
Poor-Man-Container-Management-Tool . Wir können einen Befehl
innerhalb eines Containers ausführen. Wir können den Namen mit
der Minus-Minus-Namensoption angeben. Und am Ende des Befehls
haben wir das Bild angegeben, auf
dem dieser Container
basiert , indem wir die
minus d-Option verwendet haben, die für detached steht, was
bedeutet, dass der Container in
ausgeführt wird losgelöster Modus. Das bedeutet, dass der
Container
im Hintergrund läuft , bis er angehalten wird. Mit dem Befehl pot man ps können
wir alle laufenden
Container mit
dem Befehl pod man ps
mit dieser Option minus a auflisten , wir können alle
laufenden Container auflisten oder nicht. Verwenden des Befehls pod man logs. Wir können Ladungen
aus einem Namencontainer beziehen, was uns bei der Behebung
möglicher Probleme
im Zusammenhang
mit diesem Container helfen kann. Ich möchte angeben, dass wir, wenn wir die minus e-Option verwenden, Umgebungsvariablen deklarieren , die
an diesen Container übergeben werden. Wir deportieren den Befehl man stop
unter Angabe eines Containernamens. Wir können einen laufenden Container
mit dem Pac-Man start-Befehl stoppen . erneut
den Containernamen an. Wir können einen gestoppten Container
mit dem Befehl pod man RM starten . Wir können einen Container mit
Angabe seines Namens entfernen. Mit dem Pac-Man cp-Befehl. Wir können Dateien vom
Host in einen Container kopieren indem wir den Befehl old man exec angeben, einen Containernamen angeben, wir können einen Befehl innerhalb
eines Namencontainers ausführen und den Befehl pot man
exec
verwenden . Mit
den Minus-IT-Optionen Schrägstrich-Bin-Schrägstrich-Bash
angeben, können
wir ein Terminal
innerhalb eines Namenscontainers erhalten. Die minus i-Option leitet
alle Eingaben vom
Host an den Container weiter . Und die minus
d-Option wird uns
das Pseudo-Terminal
innerhalb dieses Containers aufgeben . Jetzt haben wir
einen guten Überblick über alle wichtigen Befehle, die zum Ausführen
von Containern mit
dem
Pod-Container-Management-Tool
erforderlich sind. Gehen wir zur Demo über. Jetzt suche ich zuerst mit dem Suchbefehl des
Pod-Mans nach
einem HTTP-D-Image. Ich scrolle nur ein bisschen nach oben
und in der Beschreibung sehe
ich einen Apache
HTTP 2.4 Server. Ich kopiere den Namen
dieses Bildes und lösche den
Bildschirm
und verwende den Postman-Pull-Befehl, um es lokal herunterzuladen. Wie Sie sehen können, versucht
es, das Bild
aus der Registrierung abzurufen, erhält die Quellsignaturen und kopiert die
Blobs, während wir sprechen. Also lass uns einfach ein bisschen warten. Die Umfrage war also
erfolgreich. Um dies zu überprüfen, verwende ich
den
Befehl pod man images und wir können sehen, dass
unser Image hier vorhanden ist. Als Nächstes verwende ich den Befehl port
mapping spec, um
detaillierte Informationen zu
diesem bestimmten Bild zu erhalten . Wir können hier viele
Informationen sehen. Zunächst können wir den Benutzer sehen,
unter dem dieses Bild ausgeführt wird
, der bei 1001 verwendet wird. Wir können auch Details zu
den belichteten Ports des
Bildes sehen, nämlich 8088443. Eine Zusammenfassung und Beschreibung dessen wofür dieses Bild gedacht ist, das Arbeitsverzeichnis
dieses Bildes
sowie Details
zum Anbieter
des Bildes, sowie Details
zum Anbieter der
Redhead Incorporated ist, und die Version des
Bildes, die 2.4 ist. Ich werde einfach den Bildschirm räumen. Jetzt. Jetzt verwende ich
den Port-VLAN-Befehl der den Namen
meines Containers
über die
Minus-Minus-Namensoption
angibt . Und es wird
Web-App genannt und das Bild
, auf dem es basieren soll. Und wir können deutlich sehen, dass
der Container gestartet ist. Es gibt zwar einige
Protokolle und Fehler, aber es hat ordnungsgemäß funktioniert. Ich verlasse einfach den Bildschirm. Ich werde jetzt den Bootsmann ps
abzüglich eines Befehls verwenden , um alle Container
aufzulisten. Und wir können deutlich
unseren Web-App-Container sehen
, der vor
39 Sekunden erstellt wurde. Ich werde es mit
dem armen Mann RM-Befehl entfernen , der seinen Namen
angibt. Jetzt werde ich den
Container erneut ausführen, aber jetzt im getrennten Modus der durch die Option minus d
angegeben wird. Ich werde die
gleichnamige Web-App beibehalten und sie wird
auf demselben Bild basieren. Ich werde meine Arbeit mithilfe
des Befehls pause
band ps validieren , der uns alle
laufenden Container zeigt. Und wir können sehen, dass unser
Container namens Web App
, der vor
zwei Sekunden erstellt wurde, läuft. Ich werde detaillierte
Informationen zu diesem Container durch
die Verwendung von Pac-Man-Protokollen erhalten. Und wir können einige Protokolle sehen mit unserem
Web-App-Container
verknüpft sind. Lassen Sie mich jetzt einfach den Bildschirm
räumen. Und jetzt verwenden wir
den
Befehl Pokemon stop , um mit
einem Web-App-Container zu stoppen. Wir können unsere
Arbeit durch die Verwendung
des alten Mannes ps abzüglich
eines Befehls validieren , mit dem wir den Status
des Containers überprüfen können und er von oben auf beendet umgeschaltet wird. Ich werde den Container erneut starten indem ich den bootman
start-Befehl verwende. Und wie Sie sehen können, hat sich
der Status
wieder von „beendet“ auf „oben“ geändert. Jetzt möchte ich den
Pac-Man cp-Befehl
demonstrieren. Aber vorher werde ich
ein Dokument namens index.html
mit dem Inhalt von
helloworld erstellen ein Dokument namens index.html , indem den Befehl echo und die
Ausgabeumleitung verwende, dann verwende ich den Befehl
port man cp, spezifiziere die Datei index.html , die ich zuvor erstellt habe. Und ich werde
es in den Container namens
Wet-Bulb innerhalb des
letzten Schrägstrichs var slash v,
V, v slash HTML
slash index.html übertragen Wet-Bulb innerhalb des
letzten Schrägstrichs var slash v, . Jetzt werde ich den Container
mit dem
Befehl boatman exec mit den minus
IT-Optionen slash bin slash bash betreten . Wie Sie sehen können, hat sich der
Stapel geändert und wenn ich einen P
S minus ox-Befehl ausführe, kann
ich deutlich sehen, dass ich
nicht mehr auf meinem lokalen Host bin. Ich bin im Container. Ich werde das
Verzeichnis in den Schrägstrich
var slash VB Slash HTML Pfad ändern . Und hier kann ich eine Liste machen. In dieser Liste können
wir deutlich die Datei index.html
sehen. Und ich werde einfach den
Inhalt dieser Datei lesen
, der genau den
Angaben entspricht. Hallo World. Wir haben
unsere Datei erfolgreich vom lokalen Host in
den Container
unter diesem angegebenen Pfad kopiert . Wenn ich
den Inhalt
dieser Datei überprüfen möchte , ohne den Container zu
betreten, kann
ich das tun, indem ich den Befehl pod man
exec
verwende , um
den cat-Befehl an diesem
angegebenen Pfad auszuführen . Jetzt ist es an der Zeit, hinter uns selbst
aufzuräumen. Zuerst werde ich
alle Container mit
dem Pod man ps abzüglich eines Befehls auflisten , und wir können dort deutlich unseren
Web-App-Container sehen. Dann stoppe ich
den Container mit dem Befehl Pokemon stop
web app. Danach werde ich den Container
mit dem Befehl port man RM
entfernen . Als Nächstes liste ich alle auf
meinem lokalen Host vorhandenen
Bilder mit dem Befehl
Pokemon images auf Ich werde mein
vorhandenes Image mit
dem Befehl pot man RMI entfernen . Und ich werde wieder
alle Bilder mit dem Befehl
Pokemon images auflisten . Und wir können deutlich sehen
, dass wir keine Bilder haben. Und wenn wir den Pod
man ps abzüglich eines Befehls verwenden, können
wir auch deutlich
erkennen, dass diesem Zeitpunkt
keine laufenden
Container mehr laufen. Also herzlichen Glückwunsch. Sie haben jetzt ein grundlegendes
Verständnis dafür, wie Sie
containerisierte Dienste mithilfe
des
Container-Man-Man-Man-Management-Tools verwalten containerisierte Dienste mithilfe . sehen uns im nächsten Modul, in
dem wir
über die Verwaltung von Container-Images sprechen werden .
5. Verwalten von Bildern: Im vorherigen
Modul haben wir
über Containermanagement gesprochen . Schauen wir uns nun auch die
Möglichkeiten an, wie wir Images in
unserer Umgebung
verwalten können . Also
lasst uns ohne weitere Umschweife loslegen. Schauen wir uns nun einige
wichtige Befehle für Verwaltung von Bildern innerhalb von Postboten an. Wir haben zuvor einen
gegossenen Mannpool gesehen. Mit dem Befehl port
man poor können
wir jetzt ein Container-Image
lokal aus einem Projektarchiv speichern. Wir können alle Container-Images
mit den Pot-Man-Images auflisten . Und wenn wir ein lokal gespeichertes Bild
entfernen möchten, können
wir den
Pod-Man-RMI-Befehl verwenden ,
der den Image-Namen angibt. Nehmen wir nun an, wir
möchten ein Bild umbenennen. Wir können dies tun, indem wir
den Pac-Man-Tag-Befehl den
ursprünglichen Bildnamen
und den neuen Image-Namen
angeben . Wir würden es gerne geben.
Wenn wir ein lokal sicheres
Container-Image in ein Register hochladen möchten, können
wir das mit
dem Pac-Man-Push-Befehl tun. Wenn wir,
wie zuvor besprochen,
detaillierte
Informationen zu einem lokal gespeicherten
Container-Image erhalten möchten ,
detaillierte
Informationen zu einem lokal gespeicherten
Container-Image , können
wir dies mit
dem Befehl pot man
inspect tun . Nehmen wir nun an, wir arbeiten in einem Container wie einem
HTTP-Webserver. Und wir haben unsere Datei
index.html geändert und möchten
ein neues Image erstellen , das auf
diesem geänderten Container basiert. Wir können das tun, indem wir
den Befehl
pod men commit , um ein Image
aus einem laufenden Container zu erstellen. Nachdem wir nun
einen Überblick über
alle wichtigen Befehle
für die Bildverwaltung haben , gehen
wir in die Demo. Zuerst werde ich die Suche von
port man verwenden, um ein adäquates HTTPD-Bild zu finden. Ich scrolle
innerhalb der Ergebnisse nach oben. Und wieder werde ich
das erste Ergebnis kopieren, nämlich HTTP D24 RHEL sieben. Ich würde den Bildschirm löschen und jetzt werde ich den Pac-Man-Pool verwenden um
das Bild aus
dem Repository herunterzuladen und lokal zu
speichern. Warten wir jetzt ein bisschen, bis
das Ziehen abgeschlossen ist. Jetzt, wo der
Download abgeschlossen ist, kann
ich
Pac-Man-Images verwenden, um zu überprüfen, ob das Image erfolgreich
war. Und wir können es hier sehen. Jetzt werde ich den Port Man
Inspector verwenden, um das Bild zu untersuchen. Wie Sie sehen können, gibt uns Pokemon
Expect detaillierte Informationen zu
diesem bestimmten Bild. Wir können den Benutzer sehen
, unter dem das Bild läuft. Wir können die exponierten Häfen sehen. Sie können eine Zusammenfassung dessen sehen, wofür das Bild gedacht ist,
eine detaillierte Beschreibung dazu . Jetzt möchte ich
das Bild mit dem Befehl
boatman tag zurückziehen und den ursprünglichen
Bildnamen
angeben, und das neue Tag das ich ihm geben werde, wird meine neue Tag-Version 2
genannt. Ich kann es mit der Arbeit mit
dem Pokemon images Command N erstellen . Wir können hier deutlich sehen localhost Slash
Minute Tag Version 2. Jetzt werde ich den Port Man
Run-Befehls-Container verwenden , der im getrennten Modus
ausgeführt wird. Der Container wird als
Web-App bezeichnet und basiert
auf dem Bild namens
Minuten-Tag Version 2. Wie Sie sehen können,
wurde der Container erfolgreich erstellt. Und jetzt werde ich
das Pac-Man ps minus
einem Befehl ausführen , um zu überprüfen
, ob es läuft. Und was wissen Sie, dass es angemessen
funktioniert? Als nächstes werde ich ein Terminal
innerhalb des Containers mit
dem Befehl pot man exact minus IT
slash bin slash bash öffnen . Dort werde ich einen Echo-Test machen und die Ausgabe in
die
Slash-Var-Schrägstrich-HTML-Slash-Datei
index.html
umleiten . Innerhalb dieses Containers
verlasse ich den Container. Ich werde Pac-Man ps minus a ausführen. Auch hier können wir sehen, dass
es läuft. Und ich werde den Befehl
Pac-Man commit
verwenden um ein Bild zu erstellen auf diesem geänderten Container
basiert, Pod Men Commit
Web-App, meinem neuen Image, Version 1, können wir sehen, dass das Bild war
erfolgreich erstellt. Ich werde den vorhandenen
Container namens web map stoppen und ihn mit
dem Befehl poor man RM entfernen. Ich lösche den Bildschirm. Und jetzt werde ich
einen neuen Container erstellen im getrennten Modus
mit dem gleichen Namen
läuft, aber jetzt basierend auf
dem festgeschriebenen Image, das
wir zuvor erstellt haben, wurde
der Container
erfolgreich erstellt und jetzt werde ich den Befehl
pot man exec verwenden um einen cat-Befehl innerhalb
des Containers auszuführen , um zu sehen, ob
die Datei vorhanden ist. Cat Schrägstriche wie v, V, v Schrägstrich HTML Schrägstrich index.html. Und wir können deutlich
sehen, dass die Ausgabe wie erwartet
ist Südtests, also hat es perfekt funktioniert. Jetzt werde ich
den
Befehl Pokemon stop verwenden , um meinen
Web-App-Container zu stoppen. Ich werde es mit
dem Befehl pod man RM entfernen. Ich führe jetzt den
Pac-Man images Befehl aus, um
alle Bilder aufzulisten , die in
meinem lokalen Dateisystem gespeichert sind. Und ich werde
jeden von ihnen mit
dem Pokemon RMI-Befehl entfernen . So stolzer Mann, RMI, Minute Image Version
1, Pot Man, RMI, mein neuer Tag 2 und armer Mann RMI Registry Dot
Access, beide Red Hat.com, können
wir überprüfen,
dass unsere Systeme gereinigt werden von Ausführen des
Pot Man Images-Befehls und Abteilung ps abzüglich eines Befehls und es ist nichts mehr übrig. Herzlichen Glückwunsch, Sie haben jetzt ein grundlegendes Verständnis für die Verwaltung
von Container-Images mit dem
Pac-Man-Containermanagement-Tool. sehen uns im nächsten Modul
, in dem wir
über kurzlebige und
persistente Speicherung sprechen werden .
6. Persistente Lagerung: Hallo und willkommen zurück. In diesem Modul werden wir
über die Lagerung von Containern sprechen und lernen, wie man
persistente Lagerung in Containern einbaut. Weil Container standardmäßig kurzlebigen Speicher
haben. Das bedeutet also, dass
alles, was wir im Moment
der Zerstörung in
einem Container getan haben , weg ist. Also lass uns loslegen. Der Speicher, den der Container
verwendet, ist also kurzlebig. Die kurzlebige Natur
des Container-Speichers bedeutet, dass sein Inhalt
verloren geht, nachdem Sie den Container
entfernt haben , indem ein Verzeichnis vom Host
innerhalb des Containers mounten, Sie dem Container geben
persistenter Speicher. Alle Änderungen und Inhalte
des eingehängten Verzeichnisses werden das Host-Dateisystem
geschrieben. Somit bleiben sie bestehen, nachdem der Behälter
zerstört oder entfernt wurde. Beachten
Sie, dass Sie die
Dateisystemberechtigungen
berücksichtigen müssen Dateisystemberechtigungen
berücksichtigen , wenn Sie
ein persistentes Volume bereitstellen das der Container verwenden kann. Jetzt unterstützt das
Pokemon-Containermanagement-Tool wurzellose Container, wenn
Sie den Container
als Benutzer-Root
des Hosts ausführen , dann stimmen UID und GID mit denen
innerhalb des Containers überein. In einem Container ohne Root hat der Benutzer Root-Zugriff
innerhalb des Containers, da Pod-Man den Container
im Namespace des Benutzers erstellt, der Root-Benutzer des
Containers
der UID des Benutzers zugeordnet wird.
innerhalb des Host-Rechners. Jeder Benutzer innerhalb
des Containers ordnet sich einem Benutzer innerhalb des Bereichs von
100 Tausend zu. Schauen wir uns nun
einige nützliche Befehle zum Einhängen von persistentem
Speicher in Containern an. Mit der Padma Unshare Cat Slash Proc Schrägstrich Schrägstrich UID Map. Wir können diese UID-Mapping von
Benutzern innerhalb des Containers sehen . Wir deportieren Mann, Unshare Katze
Schrägstrich Proc Schrägstrich JD Map. Wir können das GID-Mapping sehen. Wenn wir nun
persistenten Speicher
innerhalb eines Containers einhängen möchten , verwenden
wir
den
Befehl pod man run mit der minus v-Option. Der erste Befehl erstellt einen HTTP-Webserver, auf dem der Inhalt
aus dem eingehängten Verzeichnis abgerufen wird Schrägstrich, Webinhalte auf
dem Host werden im Schrägstrich, var, Schrägstrich, www,
Punkt, Schrägstrich, HTML-Pfad) eingehängt Schrägstrich, var, Schrägstrich, www,
Punkt, Schrägstrich, HTML-Pfad innerhalb des Containers. am Ende
des Pfads ein großes Z hinzufügen, stellen Sie auch sicher, dass Sie
den richtigen SE Linux-Kontext festlegen . Kommen wir jetzt zur Demo und machen die Dinge ein
bisschen praktischer. Beginnen wir also mit dieser
Demo, indem wir uns zunächst
die GID- und
UID-Zuordnungen mit dem Befehl pod
man unshare ansehen die GID- und
UID-Zuordnungen . Pod Mann, Unshare Katze Schrägstrich, Proc Schrägstrich, Schrägstrich Ihre ID-Map. Und wir können die
Mappings hier sehen. Und Birdman Unshare Cat Slash
Proc Slash Zellengröße JID. Und wir können die
GID-Zuordnungen hier sehen. Jetzt, wo wir das haben, wollen wir
tatsächlich einen neuen Pfad erstellen. Ich erstelle ein
Verzeichnis namens Web Content in der
Startseite meines Benutzers. In diesem Ordner werde ich die
IN eingehängte Nachricht wiedergeben
und
die Ausgabe in
eine Datei namens index.html umleiten . Ich werde jetzt den
Bildschirm leeren und uns ansehen welche Bilder wir
mit dem Pac-Man-Befehl
images zur Verfügung haben . Wir haben keine. Deshalb werde ich den Befehl pod man
pull verwenden, um ein Image eines
HTTP-Servers lokal
herunterzuladen. Und warten wir einfach ein bisschen bis
das Bild heruntergeladen wurde. Das Bild wurde erfolgreich
heruntergeladen. Und wir können den Befehl pod
man run verwenden,
um einen Container
namens Web App zu erstellen. Es wird im
getrennten Modus ausgeführt und ich
werde das
Webinhaltsverzeichnis, das ich
zuvor von meinem
Host erstellt habe , in den Slash var slash
www slash HTML-Ordner
innerhalb des Containers mounten Beibehaltung der
korrekten SELinux-Kontexte. Indem ich am Ende das
große Z hinzufüge, binde
ich den Port
durch die Option minus p. Daher wird
Port 8082 des Hosts an Port 8080
des Containers gebunden. Und ich werde
das Bild verwenden , das ich
zuvor heruntergeladen habe. Wie wir sehen können, wenn wir den
Pod man ps abzüglich eines Befehls verwenden, der Container läuft
der Container und der Port
ist korrekt begrenzt. Wenn ich einen Curl-Befehl auf
dem lokalen Host
über Port 8082
ausführe, können wir die Meldung
I am Mountain sehen. Jetzt werde ich den Befehl boatman
exec verwenden, um
ein N-Terminal innerhalb
des Containers zu erhalten ein N-Terminal innerhalb
des Containers und ich werde eine neue Nachricht wiederholen. Diese Nachricht bedeutet, dass ich geändert wurde und
die Standardausgabe ausgeben werde, die Datei, die wir
im Container eingehängt haben. Also index.html. Ich werde den Container
mit dem Befehl exit verlassen, und jetzt lese ich die Datei
von den Einhängepunkten,
also von Webinhalten. Und wir können sehen, dass beide Werte gemountet
sind und ich modifiziert habe. Wenn ich den Befehl curl verwende, können
wir dieselbe Ausgabe sehen. Jetzt stoppe ich den
Container und
entferne den Container mit
dem Befehl pod man RM. Und ich werde es neu erstellen, nur um die Natur des
persistenten Speichers zu erkennen. Testen wir das also, indem wir einen curl-Befehl
auf dem lokalen Host auf Port 8082
ausführen . Wie Sie sehen können, ist die Nachricht unverändert
geblieben. Das liegt daran, dass
der Speicher dieses speziellen Containers für bestimmten Pfad auf dem lokalen Host
gespeichert wird. Obwohl der
Container zerstört wurde, blieb das, was innerhalb
des Webinhaltsverzeichnisses
geschrieben wurde was innerhalb
des Webinhaltsverzeichnisses
geschrieben wurde, dauerhaft. Vielen Dank
und wir sehen uns im nächsten Modul, in
dem wir über Portbindung
sprechen werden .
7. Port Bindung: Hallo und willkommen zurück. Im vorherigen Modul
haben wir über
den kurzlebigen Speicher
und den persistenten Speicher gesprochen und gelernt, wie man
Containern dauerhaften Speicher gibt, damit wir nichts verlieren,
wenn sie zerstört werden. In diesem Modul werden
wir
über die Port-Bindung sprechen und wie
die Ports vom lokalen Host an die Container-Spots gebunden werden, um sie auch von
außen
zugänglich zu machen . Also lass uns loslegen. Was ist Containerport-Bindung? Nun, die Verbindung zu einem
Container bedeutet, dass Clients
zwei Ports des Hosts verbinden müssen
, die den Datenverkehr an
die Container-Sports oder die freiliegenden Ports des
Containers senden . Wir können Ports des Hosts
denen zuordnen, auf die
innerhalb des Containers zugegriffen werden kann, um Container auch
von außen zugänglich zu machen, nicht nur vom lokalen Host aus. Denken Sie daran, dass
wir, wenn
Sie sie auch von
außen
zugänglich machen möchten , auch die Firewallregeln überprüfen müssen, um sicherzustellen, dass jeglicher Datenverkehr auf
diesen Ports zulässig ist. In diesem
Sinne schauen wir uns
einige wichtige Befehle an, um Container-Port-Bindungen durchzuführen. Um nun einen Port
vom lokalen Host an den Container
zu binden , verwenden
wir
den
Befehl pod man run mit der minus p-Option. unserem ersten Beispiel wird
ein containerisierter
HTTPD-Webserver namens Web-App erstellt , bei dem der gesamte Datenverkehr von
Port 8082 des Hosts an Port
8080 des Containers weitergeleitet
wird. Beachten Sie, dass der Container Verkehr auf diesem Port
akzeptieren muss . Das heißt, es muss bloßgestellt werden. Und wir können sehen, dass wir,
indem wir den Befehl pot man in spec für
das Container-Image verwenden, indem
wir den
Portmanteau-Port minus einem Befehl verwenden, alle Port-Zuordnungen sehen können. Und indem wir den Befehl pod man
port verwenden , der den
Containernamen angibt, können
wir die Port-Zuordnung
für einen Namencontainer sehen. Vergessen Sie nicht, mithilfe des
Firewall-CMD-Befehls eine persistente Firewallregel zu
erstellen mithilfe des
Firewall-CMD-Befehls eine persistente Firewallregel , um den Datenverkehr auf diesem Port
zuzulassen. Jetzt haben Sie einen guten
theoretischen Überblick darüber, was
Port Mapping ist und welche Funktion es innerhalb des Port Mapping ist und Containermanagements
hat. Gehen wir zur Demo. Zunächst werde ich
den
Befehl Pokemon images verwenden , um zu zeigen, dass ich
ein lokal gespeichertes
HTTPD-Container-Image habe . Dann werde ich den Befehl port
man run verwenden, um einen Container namens
Web App running
and detached mode zu erstellen , der den gesamten
Datenverkehr von Port 8082
von der Hostseite an Port
8080 weiterleitet die Containerseite. Wie wir durch den
Pod Man ps abzüglich eines Befehls sehen können, ist
der Container betriebsbereit. Jetzt werde ich einen stolzen
man exec Befehl mit
der minus i t-Option verwenden ,
um ein aktives Terminal
innerhalb des Containers zu erhalten. Hier werde ich die
Nachricht hello world wiedergeben
und die
Ausgabe in die Datei slash var slash
www slash HTML slash
index.html umleiten . Dann verlasse ich den Container
mit dem Befehl exit. Jetzt verwenden wir
den port man port minus einen Befehl, um
alle Port-Zuordnungen zu sehen. Und wir können deutlich
sehen, dass der Datenverkehr vom lokalen Host auf Port 8082 auf Port
8080 des Containers umgeleitet wird. Wir können das auch sehen,
indem wir den Befehl port man port verwenden,
der den Namen web app angibt. Jetzt testen wir das
mit einem curl-Befehl, und wir rufen den
lokalen Host auf Port 8082 auf. Und wir können
die helloworld-Botschaft deutlich erkennen. Es hat also perfekt funktioniert. Um den Datenverkehr von außerhalb
des lokalen Hosts
zugänglich zu machen, füge
ich jetzt von außerhalb
des lokalen Hosts
zugänglich zu machen, auch eine
Firewallregel um den
Datenverkehr auf Port 8082 zuzulassen. Sie bittet mich um
Administratorrechte. Ich werde sie geben und es
war erfolgreich. Jetzt
ist unser containerisierter Apache-Webserver
sowohl vom lokalen Host als auch
außerhalb des lokalen
Hosts auf Port 8082 zugänglich sowohl vom lokalen Host als auch . Wir können auch
die Port-Bindung sehen, selbst wenn wir ein Pokemon
ps abzüglich eines Befehls ausführen, können
wir hier deutlich sehen, dass der
Datenverkehr vom lokalen Host auf Port
8080-Slash-TCP auf der Containerseite
umgeleitet wird . Woher weiß ich, dass
ich direkt
zu Port 8080 auf der
Containerseite gehen sollte , hier kommt Pokemon
Inspect ins Spiel. Wir können das lokal
sichere Container-Image überprüfen und werden uns die exponierten Häfen
ansehen. Die freiliegenden Anschlüsse sind tatsächlich das, was für
den Container zugänglich ist. Woher lässt es
Verkehr zu? Deshalb
wusste ich, dass Port 8080 an dem
ich
den Datenverkehr von Port 8082 umleiten sollte. Jetzt müssen wir nur noch hinter uns selbst
aufräumen, unsere Container-Web-App
mit dem Befehl man stop stoppen. Dann werde ich es mit
dem Pokemon RM-Befehl entfernen. Und zuletzt werde ich das Bild mit
dem Pokemon RMI-Befehl
entfernen . Vielen Dank
und wir sehen uns im nächsten Modul, in
dem wir über
Container Networking
sprechen werden .
8. Container: Hallo und willkommen zurück. Im vorherigen Modul
haben wir ein wenig
über die Port-Zuordnung und das
Binden eines Host-Ports an einen freiliegenden
Container-Port gesprochen über die Port-Zuordnung und . Jetzt werden wir uns eingehender
mit Container Networking befassen. Wir werden sehen, wie der arme Mann in der
Lage ist,
Netzwerke zu schaffen und Namen
innerhalb dieser Netzwerke aufzulösen. Also
lasst uns ohne weitere Umschweife loslegen. Schauen wir uns nun einige
wichtige Schritte
für Container Networking an. Der wichtige Befehl hier ist beide Männer vernetzen sich mit dem Befehl
postman network create. Wir können ein Netzwerk erstellen, das
seinen Gateway-Namen und sein Subnetz angibt . Die Poor-Man-Netzwerkprüfung, bei der ein Netzwerkname
angegeben wird, können
wir Details
zu einem vorhandenen Netzwerk erhalten. Wir deportieren Man Network Creates unter Angabe eines Containernamens. Wir können den Container
mit einem vorhandenen Netzwerk verbinden. Wir deportieren das entfernte Mannnetzwerk. Wir können ein
bestehendes Netzwerk entfernen und wir deportieren den Befehl man run. Wir können die Netzwerkoption
minus minus hinzufügen und den Container bei der Erstellung mit
einem Netzwerk
verbinden. Nachdem wir nun
einen guten Überblick über wichtige Befehle im Zusammenhang mit
Container Networking haben, wollen wir uns mit der Demo befassen. Um diese Demo zu starten,
verwende ich den Befehl port man
images, um Ihnen mein lokal gespeichertes
HTTPD-Container-Image zu zeigen. Jetzt benutze ich den
Suchbefehl des armen Mannes, um nach einem achten Red Hat Enterprise
Linux Image zu suchen. Ich habe es kopiert und
jetzt verwende ich
die Post Man Paul-Befehle
, um es lokal herunterzuladen. Warten wir also einfach ein bisschen, bis
der Download abgeschlossen ist. Jetzt werde ich den
Befehl
poor man network create verwenden, um ein
Netzwerk für meine Container zu erstellen. Das Subnetz wird durch
die Subnetzoption minus
angegeben , und es wird 192168
Punkt ein Punkt 0 Schrägstrich 24 sein. Und das Gateway
wird
über die
Minus-Minus-Gateway-Option spezifiziert , und es wird 192168
Punkt eins, Punkt eins sein. Der Name meines Netzwerks
wird mein Netzwerk sein. Nachdem das Netzwerk erfolgreich erstellt
wurde, können
wir mit der Erstellung
meiner containerisierten Dienste fortfahren. Zuerst werde ich den Pac-Man-Befehl
run verwenden, um
einen Container namens Client zu erstellen , der im getrennten Modus
ausgeführt über
die Minus-Minus-Netzwerkoption
mit persistentem Speicher mit meinem Netzwerk
verbunden ist. Und das Basisimage hinter
diesem Container wird das Red Hat Enterprise
Linux Acht-Basisimage sein. Wie Sie sehen können, wurde der
Container erfolgreich erstellt und ich werde Container mit
dem Pokemon ps minus einer Option
auflisten oder ausführen , und es läuft. Dann erstelle ich meinen zweiten
containerisierten Dienst mit dem Befehl Pokemon run. Dies wird ein Apache-Webserver namens
Webserver sein, im getrennten Modus
läuft auch
mit meinem Netzwerk verbunden ist. Es wird das
http-D24-L7-Image register.access.com verwenden, das ich lokal gespeichert habe. Dieser zweite Container wurde
ebenfalls erfolgreich erstellt. Wir können sehen, wie sie beide
laufen und laufen. Jetzt verwende ich den Befehl pod
man network ls um alle unsere
verfügbaren Netzwerke zu sehen. Und wir können mein Netzwerk hier deutlich
sehen. Und um detailliertere
Informationen über mein Netzwerk zu erhalten, verwende
ich den
Befehl postman
network inspect , der den
Namen meines Netzwerks angibt. Und wir können hier sowohl
das Subnetz als auch das Gateway sehen. Nachdem wir nun
einen guten Überblick über unser Netzwerk
und unsere Container haben, wollen wir sehen, ob alles funktioniert. Ich werde den Befehl port
man exec mit
der minus IT-Option verwenden , um
ein Terminal innerhalb des
Webserver-Containers zu öffnen . Hier verwende ich den Befehl
echo und leite seine Ausgabe in
die Datei slash var slash www slash HTML slash
index.html um. Um eine
personalisierte Nachricht zu erstellen. Genauer gesagt, hallo, ich
werde diesen Container verlassen, und jetzt werde ich
den anderen Container,
den Client-Container,
erneut mit der Option Pot Man Exempt
minus IT betreten den anderen Container,
den Client-Container, , um
ein Terminal innerhalb
des Clients zu erhalten , auf dem Red Hat
Enterprise Linux acht läuft. Hier werde ich den
curl-Befehl verwenden, um den Webserver
auf Port 8080 zu locken
, der freigelegt wurde. Und wir können deutlich sehen, dass
die Botschaft wie erwartet ist. Herzlichen Glückwunsch, wir haben zwei Container
erstellt. Einer, der in einem containerisierten
Apache-Webserver läuft, auf dem Red Hat
Enterprise Linux acht läuft, haben wir ein Netzwerk zwischen den
beiden erstellt und wir können sehen, dass sie kommunizieren und sie auch benannte Serverauflösung
haben. Vielen Dank
und wir sehen uns
im nächsten und letzten Modul.
9. Bilder erstellen: Willkommen zum letzten
Modul unseres Kurses. Hier lernen wir, wie man Container-Images aus
Dateien erstellt, um
unsere eigenen benutzerdefinierten Images zu erstellen unsere eigenen benutzerdefinierten Images und sie
an unsere eigenen Bedürfnisse anzupassen. Also
lasst uns ohne weitere Umschweife loslegen. Zunächst werden wir
über die Schritte
zum Erstellen eines Container-Images sprechen . Damit Birdman Images
automatisch erstellen kann , indem er die
Schritte aus einer Docker-Datei liest, fragen
Sie sich vielleicht, was eine Docker-Datei
ist? Eine Docker-Datei ist ein
Textdokument, das
alle Befehle enthält , die
ein Benutzer
zum Zusammenstellen eines Images aufrufen kann . Docker-Dateien
machen es jetzt auch einfach, neue Container-Images
basierend auf einem vorhandenen zu erstellen,
wie die Erweiterung einer bewerteten Enterprise
Linux-Container-Image-Breite und HTTPD-Funktionalität. Lassen Sie uns also weitermachen
und sehen, wie wir tatsächlich ein
Container-Image erstellen. Erstellen Sie zunächst ein
Arbeitsverzeichnis, das alle erforderlichen Dateien
zum Erstellen des
Container-Images
enthält . Dann erstellen wir eine Docker-Datei. Eine Docker-Datei ist nur ein
Textdokument, das
alle Befehle enthält , die
ein Benutzer
zum Zusammenstellen eines Images aufrufen kann . Und schließlich verwenden wir den Befehl depots
man build. Wir verwenden den
Befehl Poll Man build , um
das Image basierend auf
der Docker-Datei und
anderen Ressourcen
innerhalb des Arbeitsverzeichnisses zu erstellen der Docker-Datei und
anderen Ressourcen . Schauen wir uns nun
ein Beispiel für ein Dockerfile an und
sehen uns unsere Möglichkeiten an. Jetzt haben wir hier ein
einfaches Dockerfile. Das Von-Feld zeigt an , welches Bates-Bild erweitert werden
soll. Das Feld label gibt an , welche Bezeichnung dieses
Container-Image haben wird. Das Rosenfield führt Befehle
innerhalb des Basisbilds aus, das exponierte Feld legt
Ports von der Containerseite her offen. Das EM-Feld legt Umgebungsvariablen
innerhalb des Containers fest. Das Kopierfeld wird aus
dem Arbeitsverzeichnis
in den Container kopiert . Das Benutzerfeld legt den Benutzer fest,
unter dem der Container
ausgeführt wird , da das Hinzufügen-Feld dem Kopierfeld
ähnelt. Das Feld für den Einstiegspunkt gibt den Befehl an, mit dem der
Container beginnt. Und wir können den
Container erstellen, indem wir
diese Docker-Datei mit dem Befehl
pod men build analysieren . Lassen Sie uns all
dieses Wissen in die
Praxis umsetzen , indem wir
zur Demo übergehen. Jetzt starte ich
diese Demo, indem ich
den Inhalt meines
Arbeitsverzeichnisses aufliste . Ich habe eine
Datei index.html , die die
Nachricht hello world enthält, und eine vorgefertigte Docker-Datei
, die ich zuvor zusammengestellt habe. Schauen wir es uns an. Es erweitert also das Red Hat
Enterprise Linux Seven Image, den Benutzer, unter dem der
Container läuft, als root. Es führt eine yum-Installation
minus y HTTPD aus. Um den HTTPD-Dienst zu installieren, macht er Port 80 verfügbar und
kopiert die Datei index.html aus dem Arbeitsverzeichnis
überall in den Container-Schrägstrich var slash slash
HTML-Slash index.html Pfad. Jetzt werde ich
den
Befehl port man build verwenden , um mein Image zu erstellen. Ich spezifiziere die
minus d-Option für das Tag, die Mutter mein Bild,
den Namen meines HTTPD-Bildes, gibt . Jetzt verwende ich den Pac-Man-Befehl images, um zu sehen, ob
das Bild erstellt wurde. Und wir können es hier sehen, localhost zerschneidet mein HTTPD-Bild. Jetzt testen wir es. Ich werde den Befehl pot
man run verwenden angibt, dass der Container im getrennten Modus ausgeführt
wird. Der Name meines Containers
wird Web App sein. Ich werde Port
8082 an Port 80
des Containers weiterleiten 8082 an Port 80
des Containers und
mein eigenes erstelltes Image verwenden. Der Container scheint
in Betrieb zu sein. Die Portweiterleitung
scheint zu funktionieren. Machen wir also einen Curl auf dem
lokalen Host auf Port 8082, und wir können
die Hello World-Botschaft deutlich sehen. Die Datei wurde also erfolgreich
kopiert. Betreten wir den Container
mit den Optionen Pac-Man exec minus i t, um ein Terminal
innerhalb des Containers zu öffnen. Wie Sie sehen können,
wurde das Terminal als root geöffnet. Also wird der Benutzer, den
ich in
der Docker-Datei angegeben habe ,
verwendet und die Datei , die wir
vom lokalen Host in
den Container kopiert haben , ist vorhanden. Die Docker-Datei
verlief also wie versprochen. Wir haben ein containerisiertes Red
Hat Enterprise Linux Seven Betriebssystem, das
auf einem HTTPD-Dienst läuft. Mit dem Abschluss dieser Demo haben
wir auch
unseren Crashkurs zum
Containermanagement abgeschlossen . Ich möchte mich bei Ihnen für
Ihre Teilnahme bedanken und vielleicht
sehen wir uns in
anderen zukünftigen Kursen. Ich danke dir vielmals.