Transkripte
1. Einführung: Willkommen zurück Leute. In diesem Abschnitt
werden wir uns zunächst mit
Containern in der Cloud
oder Azure-Containern befassen. In diesem Abschnitt
werden wir also etwas über
Containerisierung lernen und uns mit Darker
befassen, was das ist, wie wir sie einrichten
und lokal verwenden können. Und dann schauen wir uns an
, wie wir unser
Dotnet Core-Projekt
containerisieren können . Und dann, wie wir mit
dem Container
Instances-Dienst von Microsoft
insgesamt gehostet dem Container
Instances-Dienst haben, können wir unser Container-Image
mithilfe von Azure Container Registry hosten . Und wir werden Kubernetes überprüfen. Wissen Sie, ob Sie zum ersten Mal die Containerisierung durchführen, machen Sie sich
keine Sorgen, dies ist ein Überblick, aber wir werden so weit
darauf eingehen, dass Sie
sich sicher fühlen sollten , ein
Gespräch darüber zu führen. Dies ist natürlich kein
vertiefter Kurs zur Containerisierung. Sie können sich meinen
vollständigen Kurs dazu ansehen. Aber für diesen Abschnitt werden
wir einen Überblick über das gesamte Wochenende
haben Verschieben Sie unsere Container von unserer lokalen Umgebung in
unsere Cloud-Umgebungen. Also bleib dran. Ich weiß, dass du Spaß haben wirst.
2. Was sind Container?: Bevor wir in
unsere Zero-Container springen
, sehen wir uns die Container an und was sie sind
und warum wir sie verwenden. Laut einem Container
handelt es sich um eine Standardeinheit von Software, die Code
und all seine Abhängigkeiten verpackt. Die Anwendung läuft schnell, zuverlässig und in jeder Umgebung. Und das
paraphrasiere ich, was geschrieben steht, aber das ist die Erklärung
und kommt von docker.com. Nein. Warum brauchen wir Container? Und das ist ein Schlagwort. Sie würden davon hören, wenn es
um Container und Containerisierung geht und warum
wir darauf umsteigen sollten. Lassen Sie uns untersuchen, was die bestehenden Probleme sind und
wie Container uns helfen können. Keine bestehenden Probleme bei
der Softwareentwicklung. Die
Virtualisierung ist mit Kosten verbunden. Wir kamen also gerade von
einem Abschnitt, in dem wir uns virtuellen Maschinen in der Cloud und Infrastruktur als Service befassten. Die Realität ist
, und ich bin mir sicher, dass jeder Entwickler
die Tatsache bezeugen kann, dass, wenn Sie eine
Umgebung haben und versuchen, in
dieser Umgebung zu entwickeln, Sie
virtuelle Maschinen benötigen, oder? Das Unternehmen kauft also
möglicherweise keine Maschine
pro Software
, die Sie haben. Stattdessen
werden sie weitermachen und eine virtuelle Maschine
bereitstellen. Jede virtuelle Maschine
muss über ein Betriebssystem verfügen, was bedeutet, dass
für jede virtuelle
Maschine mehr
Lizenzen und dann jede
unterstützende Software erforderlich sind für jede virtuelle
Maschine mehr
Lizenzen und dann jede , die Sie für
Ihre spezielle Anwendung auf
Ihrer virtuellen Maschine oder einer
Reihe von virtuellen Maschinen benötigen Ihre spezielle Anwendung auf . Dies sind weitere Lizenzkosten. Sie müssen also
berücksichtigen, dass Virtualisierung überhaupt kein
billiges Unterfangen ist, insbesondere wenn sie
intern durchgeführt wird. Wir stehen auch vor der Herausforderung unterschiedlicher Umgebungen,
denn wenn wir eine virtuelle Maschine
bereitstellen und eine bestimmte
Version der Software
installieren, Version des
Betriebssystems auf dieser bestimmten Maschine
oder virtuellen Maschine. Vielmehr ist diese Umgebung auf eine bestimmte Weise
eingerichtet, dann ist es sehr
schwierig, nicht sehr, aber erheblich
schwierig,
diese Umgebung für Q0 exakt zu replizieren . Und dann, von Accenture on Prod, stoßen wir
als Entwickler eine Situation, in der
es in Dove funktioniert und dann gibt es einen
kleinen Versionsunterschied zwischen Dev und QA. Es bricht in q0 und selbst
wenn wir die Enqueue reparieren, funktioniert
es in Prod nicht sofort. Es wird also immer
kleine Unterschiede zwischen
den verschiedenen Umgebungen geben . Und diese können, wie
ich sagen wollte, uns
als Entwicklern und
sogar der Infrastruktur
unnötige Kopfschmerzen bereiten . Ich bin Praktiker und weiß es. Eine andere Sache ist, wie einfach ist es für Sie,
Ihr Betriebssystem zu ändern? Denn wenn Sie eine
Anwendung für Dotnet Core einrichten, Sie IIS,
Sie benötigen bestimmte
Hosting-unterstützende Software, die
auf unserem Windows Server basiert. Aber wenn Sie dann auf einen Linux-Server
umsteigen müssen, müssen Sie überlegen, okay, Sie müssen in Genetics oder
Apache oder eine andere
Hosting-Software verwenden , andere Version
davon, eine andere Version davon. Und das ist es, es ist
schwierig,
die
Lauffläche in Windows
auf ein anderes, ein anderes
Betriebssystem zu replizieren die
Lauffläche in Windows . sind also einige
der Probleme, mit denen wir bei der Entwicklung von Software
konfrontiert sind, insbesondere Software, die wir auf jeder Plattform ausführen
möchten. Keine Vorteile der Verwendung von Containern. Erstens haben wir Portabilität. Deshalb hat Docker
einen Industriestandard
für Container geschaffen , damit sie
überall portabel sind. Und ich werde mehr darüber sprechen was Portfähigkeit wirklich bedeutet. Container sind außerdem leichtgewichtig, sodass sie
den
Betriebssystem-Kernel der zugrunde liegenden Maschine gemeinsam nutzen . Sie müssen nicht für jede Anwendung
ein neues Betriebssystem
bereitstellen ein neues Betriebssystem , bei der
Online-Virtualisierung, bei der jede virtuelle Maschine sozusagen über
eigene, selbst gehostete, vollständig
bereitgestellte Maschinen verfügt eigene, selbst gehostete, vollständig . Container basieren auf
einem Betriebssystem, bieten dann
aber eine
virtuelle Umgebung, in der
nur die Software installiert werden
kann, die für die Umgebung
benötigt wird . Und im weiteren Sinne, aufgrund der Fähigkeit von Ports, wir,
sobald wir diese Vorlage haben, die
wir Container-Image nennen, können wir,
sobald wir diese Vorlage haben,
die
wir Container-Image nennen, sie auf
einem Windows-Betriebssystem,
Linux oder macOS bereitstellen und jedes Mal die
gleichen Ergebnisse erzielen. Es gibt auch die
Frage der Sicherheit. Sobald sich eine Anwendung in einem Container
befindet, ist
sie sicher, da Sie sie jederzeit mitnehmen
können. Sie können es wieder verschoben anheben. Und wir können unsere Geheimnisse jederzeit speichern
, sodass niemand, wir
den Zugriff auf den Inhalt einschränken können, etwas
einfacher ist als
auf einer virtuellen Maschine. Wir werden uns auch mit Unveränderlichkeit befassen. Ein Bild, das die Vorlage für
einen Container
ist, ist also immer
dasselbe, wenn es erstellt wird. also noch
einmal auf die
Portabilität aus, denn wenn es
ein Container-Image
für meine Anwendung gibt ein Container-Image
für meine Anwendung und es drei
Bibliotheken zur Unterstützung benötigt, es
mir immer diese Umgebung. Egal wo es bereitgestellt
wird. Ich kann also sicher sein, dass es, wenn
es
einmal containerisiert ist, immer dasselbe sein wird. Wenn es eine neue
Version gibt,
müsste ich mit dieser neuen Version ein brandneues
Bild erstellen. An diesem Punkt
haben Sie ein Bild für Version eins und ein
Bild für Version zwei. Version eins wird niemals die Version zwei
aktualisieren. Sie möchten
also nicht das Risiko eingehen die falsche Version bereitzustellen da klar ist , welche Version Sie bereitstellen werden. Hier ist ein
Überblick über das gesamte Docker-Aussehen, das der
Microsoft-Dokumentation entnommen ist. der linken Seite sehen
Sie also , dass wir
die Betriebssysteme haben. Es könnte Linux sein,
es könnte Windows sein, es könnte Engine X ist gleich
B, Mac OS oder was auch immer es ist, auch immer der
zugrunde liegende Kernel ist. Also die Linke. Darüber hinaus bietet
uns die Docker Engine einen Server, einen Client und
eine RESTful-API. Und all dies funktioniert
zusammen, um
die erstellten Bilder zu verwalten . Also nochmal, das
Bild ist die Vorlage. Und mit dieser Vorlage
und dem Docker-Server können
wir Container bereitstellen, die Sie ganz rechts sehen
. Der Container ist also die
eigentliche
Instanziierung der Vorlage. Und dann
kann diese Vorlage mehrmals wiederholt werden. Wir können also
aus verschiedenen Gründen
mehrere Container für dieselbe Anwendung verwenden. Also nochmal, das Bild
besteht nur aus den Vorlagen. Der Container ist die
Instanziierung dieser Vorlage. Jetzt habe ich das
Dunklere mehrmals erwähnt. Docker ist also eine
Containerisierungsplattform , die für die Entwicklung, den
Versand und den Betrieb von Containern verwendet wird . Docker
verwendet keinen Hypervisor. Im Gegensatz zu virtuellen Maschinen benötigen
Sie also keinen Hypervisor, sodass Sie
ihn tatsächlich auf Ihrem Desktop oder
Laptop installieren können , wenn Sie Anwendungen entwickeln
und testen. Und das Beste
ist, dass es alle wichtigen
Betriebssysteme unterstützt. Unabhängig davon, welches
Betriebssystem Sie verwenden, gibt es Docker-Unterstützung dafür. Und es unterstützt
Produktions-Workloads für viele Varianten von Linux- und
Windows Server-Versionen. Das Beste ist, dass es von
vielen Cloud-Anbietern unterstützt wird ,
darunter Microsoft Azure. Jetzt siehst du auch, wenn du nach Docker
suchst, Docker Hub. Docker Hub ist also ein
Software-as-a-Service-Angebot , bei dem es sich um eine Container-Registry
handelt. Im Wesentlichen speichert und verteilt eine
Container-Registry die Container-Images, die
wir mit Docker Hub erstellen. Docker-Hub, tut mir leid,
Sie können
das Image für Ihre Anwendung tatsächlich hosten und verteilen. Und es unterstützt den öffentlichen
Vertrieb für beide. Es unterstützt auch den
privaten Vertrieb. also auch innerhalb
Ihrer Organisation Geben Sie mir also auch innerhalb
Ihrer Organisation interne
Anwendungsbilder , die Sie verwalten. Sie können sich auf Docker
Hub verlassen, wenn es um Datenschutz geht, aber auch um Hosting. Wenn wir uns nun unsere
Zero-Container und Serviceangebote auf
dieser Seite ansehen, haben
wir Azure
Container Instances. Azure Container
Instances ermöglicht es uns ,
Docker-Images auf Abruf auszuführen. Es ermöglicht uns,
ein Image aus einer Registrierung
wie Docker Hub oder
Azure Container Registry abzurufen . Das bringt uns zu
Azure Container Registry. Dies ist ein verwalteter
Docker-Registrierungsdienst der auf der Docker-Registry
basiert, der
Open-Source-Docker-Registry, auf die verwiesen werden soll. Und das wird natürlich von Microsoft
verwaltet sodass Sie sich keine
Gedanken über die Versionen machen müssen. Dies ist nur der
aktuelle Standard. Und das bietet uns ein privates Registrierungsangebot, das in Azure
gehostet wird. Und es ermöglicht Ihnen, Ihre Images für alle
Container und für Deployments zu erstellen , zu
speichern und zu verwalten, tut mir leid. Mit Azure
Container Instances
als Container Registry haben
Sie also eine gute Grundlage, um mit der
Containerisierung Ihrer Apps und dem
Speichern der verschiedenen
Versionen von Images zu beginnen Containerisierung Ihrer Apps und . Und noch einmal, all das
kann privat gemacht werden. So können Sie
Ihre Entwicklungsbemühungen beschleunigen, Ihre Infrastrukturkosten
senken und mithilfe der
Containerisierung das Maximum aus Ihrer Anwendung bei der Auslieferung herausholen. Wenn wir zurückkommen, schauen
wir uns zunächst ein dunkleres Loch an. Wir können es einrichten und wie wir unsere ersten Container erstellen
können. Also bleib hier.
3. Setup Docker: Lassen Sie uns nun mit der
Einrichtung von Darker auf unserem Computer
beginnen Einrichtung von Darker auf unserem Computer und unsere Reise
beginnt auf docker.com. Sie können also in Ihrem
Browser zu docker.com gehen und von hier aus
den entsprechenden
Docker-Client für Ihren Computer herunterladen . Ich verwende also einen Windows-Computer, aber dann sehen Sie, dass Sie einen Upgrade-Chip, einen
Linux- und einen Intel-Chip für
andere Arten von Computern bekommen
können Linux- und einen Intel-Chip für
andere Arten von Computern , die möglicherweise nicht auf
diesen Betriebssystemen basieren. Sie können es also
je
nachdem, wie Sie es für
Ihren speziellen Computer installieren
müssen , installieren, wenn Sie die
Windows-Version verwenden. Die Installation
ist einfach, wenn Sie den Assistenten verwenden. Und sobald es installiert ist, werden
Sie aufgefordert, das Windows Linux-Subsystem
oder das Windows-Subsystem für Linux, das
WSL-Subsystem, zu installieren das Windows Linux-Subsystem
oder das Windows-Subsystem für Linux, , das wir zuvor
erwähnt hatten. Es steht also in der
Microsoft-Dokumentation. Wenn Sie nur Windows, WSL,
googeln , wird diese Dokumentation
angezeigt und Sie können den Anweisungen
folgen. Sie können dies also einfach mit Ihrer
Teil
- oder
Befehlszeile als Administrator ausführen . Und es wird weitermachen und das für Sie
herunterladen und installieren. Sobald Sie Docker und das Windows-Subsystem
für Linux installiert haben, können
Sie
Ihren Docker-Desktop starten. Das kann also eine Weile dauern. Ich habe es bereits installiert. Sie können sehen, ob ich
noch aussteht oder
nicht , aber Sie können auf Pause klicken und
sicherstellen, dass Sie alles
eingerichtet haben, bevor Sie fortfahren. Und wenn Sie das tun, können
Sie
Ihren Docker Desktop starten. Von hier. Sie können sich die Behälter
ansehen. Wenn
Sie Docker zum ersten Mal ausführen, werden
Sie in dieser Liste
keine Container haben . Sie können sich auch Bilder ansehen. Von hier aus können Sie sich also tatsächlich lokale Bilder im
Vergleich zu Bildern
ansehen , die auf dem Hub
verfügbar sind. Deshalb haben wir Docker
Hub in der vorherigen Lektion erwähnt. Was Sie also tun möchten,
ist in Ihrem Browser zu hub.docker.com gehen
und ein Symbol zu erstellen. Ich sage, dass ich nein sagen
werde, nur um Ihnen zu zeigen,
was Sie erwarten können. Und dann können Sie heute kostenlos
loslegen. Und sobald Sie Ihre Cones haben, können
Sie auf die
verschiedenen Docker-Images zugreifen , die
für den öffentlichen Gebrauch zur Verfügung gestellt werden. Nein. Ich sage, ich
schicke es zurück, ich sehe mir mein
eigenes Register an, in dem ich ein von mir erstelltes
Patientendatenbankbild habe. Es ist der Öffentlichkeit zugänglich. Es ist nicht sehr nützlich. Ich habe dieses Buch für
mein Buch über die
Entwicklung von Microservices erstellt , in dem ich gezeigt habe, wie Sie in dem ich gezeigt habe, wie Sie verschiedene Teile
Ihrer Microservices-Anwendung
containerisieren können,
sodass Sie sich ein Exemplar
dieses Buches schnappen können , wenn Sie es aus
der Sicht von Microservices möchten . Aber der Punkt ist, dass
ich mir
von Docker Hub aus
verschiedene Register ansehen kann. Das sind also meine Repositorys, aber wenn ich auf Explore
klicke, kann ich mir
verschiedene Bilder ansehen und
du wirst sehen, dass mehrere tausend
Bilder zur Verwendung zur Verfügung stehen. Also kann ich jedes davon benutzen. Vielleicht benötigen Sie eine Redis-Instanz, Sie benötigen eine
Postgres-SQL-Instanz. Und beliebte, sehr beliebte
Anwendungen wurden containerisiert und stehen Ihnen als
Container-Images zur
Verfügung ,
damit Sie Images instanziieren können. Die Kosten sind Container
auf Ihrer eigenen Maschine. es nun zurück
zu Docker Desktop bringen Wenn Sie es nun zurück
zu Docker Desktop bringen und
sich im Hub anmelden,
wissen Sie, dass Sie einen Arkon
erstellt haben. Von hier aus erhalten
Sie dann nach Bedarf
Zugriff auf Ihr eigenes
Repository. Also hier
hätte ich meinen Container verpackt und auf dem Hub veröffentlicht
, wobei ich Docker Desktop
als Tool
verwendet habe. Okay, das tue ich nicht noch einmal, ich kann mir all
die lokalen Bilder ansehen , die ich genommen hätte. Und sobald ich einen Container erstellt
habe, habe ich danach Zugriff darauf. Sie können also hier sehen, dass ich
einen RabbitMQ-Container
habe, ich habe einen Mongo-DB-Container zwei Containern für
Microsoft SQL Server und ich habe einen für 3D-Skizze. Wenn wir also
zurückkommen,
schauen wir uns das ganze Wochenende weltweit an. Es bringt ein Bild ein und
erstellt unseren eigenen Container.
4. Einen Container erstellen: Derzeit ist Microsoft
SQL Server fast ausschließlich
auf Windows-Computern nutzbar. Wenn Sie jetzt
Mac oder Linux verwenden, sich
keine Sorgen, es gibt
immer noch eine Lösung für Sie. Lösung Nummer eins
wäre , dass Sie
eine virtuelle Maschine verwenden können, sodass Sie VMware oder ein
anderes Tool verwenden können , das Virtualisierung
unterstützt. Und Sie können
eine virtuelle Maschine einem Windows-Betriebssystem starten
und diese dann verwenden. Wisse, dass das
ressourcenintensiv sein kann. Und ich werde Sie nicht all das
durchmachen lassen, nur
um die Software zu benutzen. Die Alternative zu einer
virtualisierten Umgebung für Windows wäre die Verwendung von doc. Ich möchte Sie ermutigen, Ihr Terminal zu
starten. Ich verwende also noch einmal
einen Windows-Computer, aber Ihr Terminal unter Linux oder Mac OSX würde diesem
sehr ähnlich aussehen. Und Sie können einfach
den Befehl docker ausführen , um
sicherzustellen, dass er installiert ist. Und wenn Sie etwas sehen, das so
aussieht, wussten
sie nicht, dass
Sie Zugriff auf
die Docker-CLI-Befehle haben . Ordnung, was wir an dieser Stelle tun
wollen, ist
einen Befehl namens
Docker Pull auszuführen , der ein wenig
hineinzoomt ,
damit er einfacher zu lesen ist. Also machen wir
Docker, Pull, Docker, Pull. Dann ziehen wir
das heraus, was wir Bild nennen werden. Docker hat also
vordefinierte Dateien, die die Umgebung
auskleiden, die für eine
bestimmte Anwendung benötigt
wird. Und diese werden Bilder genannt. Das Bild, das wir wollen, ist das Microsoft MS
SQL Server-Image. Also machen wir einen Docker,
ziehen an dem Bild, sodass Sie auf Pause klicken können, stellen Sie sicher, dass Sie es so eingeben, wie ich es habe. Und wenn Sie die Eingabetaste drücken, wird
es
weitermachen und sagen: Okay, ich nehme Liter und dann werden
Sie sehen, wie
es heruntergeladen wird. Ich habe das Bild also bereits abgerufen, also habe ich
es bereits auf meinem Computer. Aber du wirst
sehen, dass es zieht. Und dann wird es
anfangen,
deine Metriken für das fertige Laden anzuzeigen . Und sie würden tatsächlich eher
so aussehen. Das ist also ein Screenshot, den ich zuvor
gemacht
habe, als ich ihn heruntergeladen habe. Und du wirst
sehen, dass es diese Haufen
Linsen hervorbringt, die so ähnlich
aussehen. Und du wirst
diese Download-Tags haben. Sobald dies abgeschlossen ist, der nächste Schritt darin, es
tatsächlich auszuführen. Um es auszuführen,
benötigen Sie diesen Befehl. Also sagen wir Docker
run und dann den Bindestrich e, und dann machen wir
die EULA accept. Was also passiert, ist, dass SQL
Server normalerweise eines
dieser Dokumente enthält , die Sie benötigen, um die
Allgemeinen Geschäftsbedingungen zu akzeptieren. Also geben wir es einfach
in einen Parameter ein, dass ja, wir akzeptieren die Allgemeinen
Geschäftsbedingungen. Und dann noch einer
, auf dem ein Passwort steht. Wenn Sie sich also
den Installationsprozess angesehen haben,
als wir Windows verwenden, können
wir die
Windows-Authentifizierung verwenden um eine Verbindung zur
Datenbank herzustellen, oder? Wir benötigen also nur einen Computernamen und können einen Windows-Benutzer,
den aktuellen Windows-Benutzer, die
Windows-Authentifizierung verwenden den aktuellen Windows-Benutzer, die
Windows-Authentifizierung und die Verbindung trennen. Nun, weil es dunkler ist
und es ein Container ist, gibt es keine Fenster oder Türen oder Mark oder es gibt keine
Linux-Authentifizierung. Es ist also nicht wirklich so, dass
Sie einfach
mit dem Standardbenutzer
auf Ihrem Computer eine Verbindung herstellen können. Dieser Schritt
gilt also unabhängig davon, ob Sie Windows,
Mac, Linux usw. verwenden. Wir müssen
also ein SA-Passwort
angeben. ESI ist also der Standardbenutzer, was
Systemadministrator-Assistent-Administrator bedeutet. Jedes Mal, wenn Sie
eine Datenbank-Engine
für Microsoft SQL Server installieren , erhalten
Sie diesen Essay-Benutzer. Also werden wir dieses SA,
Passwort
einrichten und Sie können ein
beliebiges Passwort eingeben. Ich gebe hier nur ein
sicheres Passwort ein. Und das ist wirklich möglich
, was Sie vielleicht
in anderen Demos sehen , die Sie
sich irgendwo im Internet ansehen könnten . Dieses Passwort ist also nicht unbedingt für
mich oder für diese Übung einzigartig. Sie können jeden
Passwortwert eingeben, mit dem Sie sich wohl
fühlen
und an den Sie sich erinnern können. Also teile ich das Wort
starkes Passwort natürlich nur starkes Passwort natürlich mit
Sonderzeichen, Zahlen und ein paar Großbuchstaben auf. Dann geben wir den Port an. Der Port hier vorne ist wichtig,
den
wir durchqueren wollen. Der Hafen. Am anderen Ende des Doppelpunkts befindet sich der Port, dem es zugeordnet werden soll. Das bedeutet also, dass SQL Server standardmäßig
von Port 1433 sendet, das ist der Standardport. Also ohne etwas zu tun, irgendwelche Ports
oder irgendwas
anzugeben, werden immer 1433 Anfragen durchgehen
, die sich verbinden. Docker läuft jedoch in seinen eigenen speziellen
Umgebungen, sodass wir wischen müssen. Das ist der Standardport, und dann ist das der
Port von War Machine , den man
durchtunneln will, um zu diesem Sport zu gelangen. Sie könnten das also einfach als 14334233
belassen. Wenn Sie
SQL Server nicht
bereits installiert haben möchten und Mac und Linux
ausführen, dann ist 143, 33 ist in Ordnung. Sie müssen nichts extra
tun. Sie können einfach eine Verbindung herstellen. Da ich jedoch einen Windows-Computer
verwende, musste
ich meinen Port ändern, da
1433 bereits
von meiner nativen SQL
Server-Installation belegt ist . Also ich zeige
dir nur, dass du standardmäßig 14331433
machen kannst . Oder Sie können
Ihren eigenen spezifischen Port angeben,
wenn Sie dies wünschen. Dann der nächste. Als letztes sehen wir Bindestrich D und
geben dann das Bild an
, das wir ausführen möchten. Im Grunde sagen wir also, dass
Docker dieses Image ausführt und sicherstellt, dass all diese Parameter
dazwischen konfiguriert sind. Das ist im Wesentlichen das
, was wir gerade gemacht haben. Wenn Sie also die Eingabetaste drücken und
dieses zum Ausführen hochladen, wird
dieses Bild in
der dunkleren Benutzeroberfläche gestartet . Und in der Benutzeroberfläche wirst
du sehen, dass, du weißt
schon, unter der
Wanne des Containers ein Container steht. Und du hättest
dem Container einen Namen geben können. Wir haben im Befehl keinen
Namen angegeben,
aber Sie hätten den Bindestrich n eingeben und ihm
einen bestimmten Namen geben können. Wenn Sie also keinen
Namen angeben, erhalten
Sie einen zufälligen Namen, wie den, den Sie hier
mit diesen Namen sehen, zumindest Docker, ich gebe an, welche Art
von Bild wir verwenden. Und Sie werden hier
die Portspezifikationen sehen , die wir konfiguriert haben. Also wie gesagt, Sie können alternative Ports verwenden, und das
wäre gut, wenn Sie
mehrere Container mit derselben Technologie haben ,
die den Betrieb von UP-Gelenkports blockieren. Aber wenn Sie die Technologie nicht wie bei meiner MongoDB
installiert haben, läuft MongoDB nicht auf meinem Computer, also werde ich keinen
alternativen Port verwenden. Ich sage nur,
benutze den Standardport, ordne ihn dem Standardport zu und verhalte dich wie die eigentliche Software. Für SQL Server. Ich habe mehrere
Instanzen am Laufen, und ich möchte diese Instanz
eines bestimmten Ports ,
damit ich direkt
darauf zugreifen kann , wenn ich eine Verbindung herstellen muss. Schauen wir uns nun die Verbindung an. Um eine Verbindung herzustellen, kann ich also jedes
meiner SQL-Server-Verwaltungstools verwenden . Wir haben uns bereits
einige dieser Tools angesehen. Nur um mich diese
Woche zu treffen, werde ich
das Data Studio benutzen und eine Verbindung herstellen. Ich werde weitermachen und
eine neue Verbindung herstellen. Und für den Server werde ich
den lokalen Hostknoten schreiben. The Darker wird bei lokalen Gastgebern
laufen. Und deshalb ist diese
Portnummer wichtig. Denn normalerweise
wäre der
localhost-Befehl 1433 der Weg, um eine Verbindung zu der lokal installierten
SQL Server-Instanz herzustellen. Wenn, vor allem, wenn Sie
auf der Professional-,
Enterprise- oder
Developer-Stufe sind, oder? Ein lokaler Host mit dem
Port würde mich
also mit der standardmäßig installierten
Instanz auf meinem Computer verbinden . Da ich jedoch
die dunklere Instanz haben möchte, muss
ich zum lokalen Host und
dem spezifischen Port gehen , den ich ihr während
des Container-Setups gegeben
habe. Für die Authentifizierung kann ich
die von uns eingerichtete
Windows-Authentifizierung nicht verwenden . Ich muss die
SQL-Authentifizierung verwenden. Und ich sage Essay
und dann das Passwort. Ich hab's vergessen. Also hier ist eine schnelle
Methode, mit der Sie diese Umgebungswerte
aus der Dr. UI abrufen können, wenn Sie sie
vergessen haben. Sie können einfach auf
den laufenden Container klicken und anhand visueller Hinweise
wissen, wann er läuft. Hier läuft es und Sie werden sehen Protokolle
im Hintergrund ablaufen. Sie können zu Inspect gehen, Sie können zum Terminal gehen usw. Wenn ich zu Inspect gehe, sehe
ich alle Umgebungsvariablen
,
die konfiguriert wurden. Also haben wir die EULA akzeptiert. Warum? Das ist eine
Umgebungsvariable. Hier ist das SA-Passwort. Und sieh dir das an. Ich habe das Passwort über hier
zur Verfügung. wenn Sie diese
Setups machen und
Umgebungsvariablen setzen und Ihr Verstand vergisst, wo alles menschlich können
Sie jederzeit einfach
zum laufenden Container springen, um die
Umgebungsvariablen zu überprüfen und sich anzusehen. Also werde ich wieder
hierher springen und bitte das Passwort. Und dann klicke ich
auf Verbinden. Jetzt erhalte ich
die Fehlermeldung, dass es erfolgreich war, aber es benötigt eine
vertrauenswürdige Verbindung. Okay, also ich war nur
Serverzertifikat anzeigen
und da bin ich. Ich bin jetzt mit
der SQL Server-Instanz verbunden , die in meinem Container
läuft. Und dies ist ein Container, der tatsächlich in einem anderen Kurs verwendet wird, plattformübergreifenden
Entwicklung von
asp.net Core Kurs unterrichte
ich natürlich in der Warteschleife. Sie können asp.net
Core verwenden, um
eine Lösung in jeder Umgebung zu entwickeln . Also machen wir es etwas dunkler, Isaiah Sean in diesem Kurs. Und das zeige ich dir nur. Ich teile das nur mit
Ihnen, um Sie wissen zu lassen, dass diese Datenbank aus diesem Grund existiert. Sie hätten also offensichtlich keine Datenbanken, wenn Sie diesen Container einfach
erstellen würden. Dieser Container funktioniert wie jede
andere SQL Server-Instanz. Und solange der
Container läuft, können
Sie trotzdem
mit ihm interagieren. Sie können eine Verbindung damit herstellen, Sie
können Apps erstellen, um es zu verwenden. Und rate mal, was ist, wenn ich damit aufhöre? Also kann ich diesen Container
an dieser Stelle stoppen, oder? Wenn ich hier
etwas anderes versuchen
würde, zum Beispiel versuchen würde, in die Datenbank zu gehen, stelle
fest, dass mein Data
Studio hängen bleibt, weil es die Verbindung mit der
Datenbank, mit dem Server verloren
hat. Also solange der
Container läuft. Deshalb haben wir gesagt, dass Sie
bei der Installation einer Software möglicherweise nicht unbedingt
möchten, dass sie allgegenwärtig ist und
ständig läuft. Du willst aufhören, es beenden
und es auf Abruf starten. Hier
kann die Containerisierung einen großen Beitrag dazu leisten, dass Sie
Ihre Systemressourcen während der
Entwicklung
so effizient wie möglich nutzen können. Jetzt sollten Sie wissen, dass wir einige
Erfahrung mit dem Abrufen eines Images und Einrichten unseres Containers haben. Und das, diese Schritte
sind gut dokumentiert, also denke ich mir das nicht aus. Das alles kannst du finden. Sobald Sie das Image, an dem Sie
interessiert sind, auf Docker Hub gefunden haben, können Sie darauf klicken und sich alle empfohlenen
Möglichkeiten ansehen , wie Sie es für alle
Umgebungsvariablen
einrichten können , die für die
Konfiguration benötigt
werden. Aber jetzt, wo wir
gesehen haben, wie wir
ein Drittanbieter-Image verwenden können ,
lässt es uns wissen, unsere eigene Dotnet
Core-Anwendung
einzurichten, ein ganzes Wochenende
anzusehen, eine Verbindung zu diesem
Image herzustellen und zu sehen wie wir
eine Anwendung containerisieren können.
5. Setup . NET Core Project: Lassen Sie uns nun unser eigenes
asp.net Core-Projekt erstellen. Und in Zukunft
werden wir es containerisieren. Also verwenden wir natürlich
unsere reguläre Lösung. Ich werde ein neues Projekt hinzufügen. Und dieses Mal werde ich mich für ein API-Projekt
entscheiden. Und ich wähle nur eine API die
dem Thema entspricht, dass Container und
Containerisierung
gut zum Architekturdesign von Microservices passen. Also werde ich hier rüberspringen und unser neues API-Projekt
erstellen. Ich
nenne es einfach Microservice. Eine API verwendet
Container, die Demo zeigen. Sie können den Namen also wiederverwenden. Das musst du natürlich nicht. Und dann klicke ich auf Weiter. In diesem Schritt können
wir nun unseren
Authentifizierungstyp des
Frameworks auswählen und uns
dafür entscheiden, Darker zu aktivieren. Ich werde hier also nicht
dunkler aktivieren, wir werden das manuell
hinzufügen oder eine
andere Methode verwenden, um es hinzuzufügen. Aber beim zweiten Microservice werden
Sie den
Unterschied sehen, wenn wir
das tun , weil wir es einfach halten
wollen. Ich mache nur eine minimale
API und wir können auf Erstellen klicken. Wenn Sie nun
Visual Studio Code
und die Dotnet-CLI verwenden, öffnen
Sie natürlich Visual Studio Code
und die Dotnet-CLI verwenden, Ihr Terminal
und geben den Befehl dotnet new web hyphen 0 für die Ausgabe und geben dem Projekt seinen Namen. Und wenn das erledigt ist, können
Sie in den neu
erstellten Ordner wechseln und den
Code mit vollem Stopp ausführen , um
Visual Studio Code
in diesem Ordner zu starten . Jetzt haben wir unser
Standard-Web-API-Projekt und wir sind alle Entwickler,
also wissen wir, was zu tun ist. wissen, dass dieser seltene Tumor
wunderschön ist stellen
wir eine Verbindung zu unserer Datenbank
und all diesen Ressourcen her. Die Sache
ist jedoch wieder, wenn wir
von unserer Maschine
zur Entwicklungsumgebung wechseln müssen und wir sie bereitstellen, kann
es Unterschiede
zwischen den Umgebungen geben, in
denen es auf Ihrem Computer funktioniert und dann funktioniert es auf Def nicht. Und dann haben wir
Ausreden wie es gestern
funktioniert hat oder wir sagen, nun, es hat auf
meiner Maschine funktioniert oder er wird Ihre
Maschine in der Produktion benutzen. Das wissen wir alle. Aus diesem Grund macht die
Containerisierung unsere Anwendung unabhängig davon
, wo sie eingesetzt wird,
weitaus portabler und stabiler. Jetzt werde ich
diesen Anwendungen
Container-Unterstützungen hinzufügen . Ich habe die Anwendung erstellt
und lassen Sie uns ernsthaft, wir haben den schönen
Code und alles andere abgeschrieben. Aber wir wissen, dass wir
es in einem Container benötigen, also bin ich bereit, mit der
rechten Maustaste auf das Projekt zu klicken. Und dann gehe
ich runter zu Hinzufügen. Und dann wirst du
hier sehen, dass Docker unterstützt. Wenn ich also auf Docker klicke, fragt mich der
Support, okay, was ist das Ziel oder ob ich es als Linux
belassen möchte? Nun, natürlich könnten Sie
zwischen den beiden wechseln und Sie sollten sicherstellen, dass Sie die entsprechende
Umgebung
auswählen, nahezu von
den Bibliotheksauswahlen abhängt, da nicht alles unter Linux
funktioniert. Aber vorerst ist
Dotnet Core für
diese einfache App plattformübergreifend. Ich werde Linux benutzen. Ich klicke auf Okay, dann erhalten wir diese neue Datei, die
als Docker-Datei bezeichnet wird. Diese Docker-Datei
war also anfangs nicht da. Aber lassen Sie uns einfach beurteilen, was
diese Docker-Datei macht. Und es sieht verwirrend aus, aber wenn du es durchliest, wirst
du sehen, okay, es ist etwas, das verstanden werden
kann. Das erste, was es tut,
ist ein Basisimage abzurufen. Also ab und dann
heißt es den Bildnamen. Denken Sie also daran, als wir unseren
Docker-Pull für SQL Server durchgeführt haben, müssen
wir
einen ähnlichen Pfad angeben wo wir stattdessen
SQL Server sagten, wir haben unser Tag nicht angegeben. Wenn Sie also eine bestimmte
Version eines Bildes möchten,
bedeutet dies, dass dies das
Bild ist, aber dann ein Doppelpunkt. Dann bedeutet der Wert nach
dem Doppelpunkt das Tag oder die spezifische Version
, an der Sie interessiert sind. Also machen wir eine
asp.net-Anwendung. Wir
möchten also natürlich, dass das Bild ein Dotnet Seven Asp.Net-Image ist. Und dann sehen wir als Basis. Dann wird spezifiziert,
okay, sobald Sie
diesen Container
erstellt haben, wird unser
Arbeitsverzeichnis mit den
exponierten Ports 84 für drei erstellt . Und dann von diesem SDK-Image aus
, in dem wir bauen wollen. Geben Sie also noch einmal das Arbeitsverzeichnis als SRC
an und
kopieren Sie dann die Dateien aus dem
CSP-Verzeichnis, oder? Sie sehen also hier, das
sind nur die Pfade. Kopieren Sie also diese
CS-Broach-Datei so
ziemlich genau aus diesem Pfad und führen Sie dann einen
dotnet-Wiederherstellungsbefehl aus. Hier
sehen Sie also, dass es nur dieselben
Dotnet-CLI-Befehle verwendet, die wir verwenden, und es
nur in unserem Namen tut, oder? Es führt also eine Wiederherstellung für
diese CSV-Datei durch und es wird alles in dieser Datei
kopiert. Dann richtet es das Arbeitsverzeichnis
so ein
, dass es wieder da ist. Also, wenn ich
es Zeile für Zeile durchgehe
, macht das natürlich Sinn, oder? Im Wesentlichen
werden wir
Dotnet Build als Release erneut ausführen . Und die Ausgabe wird sein. Slash-Build. Dies sind Verzeichnisse
, die wir nicht
erstellen müssen und sie werden nicht auf unserem Computer
erstellt. Stattdessen werden sie in
dem Container erstellt ,
der
diese Compiler-Kompilierung durchführt. Und dann heißt es
ab diesem Schritt, direkt, nachdem dieser Schritt abgeschlossen ist,
nimm, was auch immer es
heißt, es veröffentlicht. Und sie wollten den Befehl publish
ausführen
, der
dieselbe Art von Veröffentlichung ausführen würde. Nimm, was in diesem
veröffentlichten Ordner ist. Und es wird ihm hier
eine kleine Blume geben , um zu sagen, dass
aufgebraucht Pferd gleich falsch ist. Okay, noch einmal, das
ist für uns generiert. Wir müssen diese Datei nicht
unbedingt anbieten. Wir können. Es ist gut, es zu verstehen, zu modifizieren, aber im
Allgemeinen müssen Sie es nicht. Und nach all dem wird von der
Basis aus gesehen, dass das Arbeitsverzeichnis aktiv ist und es wird
alles von der Veröffentlichung
dieses Verzeichnisses kopieren . Und dann
wird der Einstiegspunkt diese DLL sein. Dotnet Core-Apps werden also normalerweise auf der Grundlage dieser DLL
ausgeführt. Und das ist es, was
die Anwendung startet , die
im Container läuft. Nun, woher
weiß ich , dass das in einem Container läuft? Lassen Sie mich also
zum Startup-Projekt des Microservices übergehen zum Startup-Projekt des ,
den
wir gerade erstellt haben. Und du wirst sehen, dass der
Sternknopf bei allen anderen neugierig und
dunkler ist . Zum Beispiel, wenn ich zum
Blazer zu HTTPS gehe. Und wir haben uns bereits die
Raseneinstellungen
angesehen und wissen, dass das Startprofil HTTP, HTTPS
enthält. Aber wenn du dir das ansiehst, wirst
du sehen, dass es hier jetzt
einen dunkleren Eintrag gibt. Und der dunklere Eintrag wird diese Start-URL
mit der Prahlerei
haben. Also wird alles für
Sie
konfiguriert , sobald Sie
die Docker-Datei hinzugefügt haben. Aber im Grunde
wird es weitergehen und dunkler erscheinen, oder? Wenn ich also zu
diesem neuen Startup-Projekt gehe und sehe, dass es mit dunkler läuft, wird
meine Anwendung
genau so gestartet, wie ich es erwartet hatte, richtig, also wird sie in einem Browser
gestartet. Und ich werde in der Lage sein, es so
zu verwenden, wie ich es erwarte. Welche Beweise habe ich dafür
, dass es in
einem Container läuft und nicht nur von Visual Studio ausgeführt
wird. Nun, wenn Sie sich das
Visual Studio-Fenster ansehen, wäre
das neue Panel
erschienen. Das hast du wahrscheinlich
noch nie gesehen. Behälter. Und in diesem Panel sehen Sie, dass dieser Container oder die
gehostete
Anwendung die
gehostete hier als Container ausgeführt
wird, oder? Nein, Sie können sich auch alle
Umgebungsvariablen
ansehen . Sie werden also die
Versionsentwicklung sehen, all diese
Umgebungsvariablen, die wir nicht gesetzt haben,
sitzen , aber sie sind alle da. Wir haben auch Häfen. Wenn Sie sich den Port hier ansehen, werden
Sie feststellen, dass er Ports
erstellt. Denken Sie daran, dass wir einen Port für den Tunnel
erstellen mussten. Also 21433, als wir
unser SQL Server-Image gemacht haben. Sie werden hier also sehen, dass wir einen Port
haben, der Port 80 und
Port 443 zugeordnet ist . Entweder, ich kann
klicken und BHs tragen. Wenn wir uns also die
Adresse in unserer Swagger-Benutzeroberfläche ansehen, werden
wir feststellen, dass
wir uns auf der 769 befinden, die Port 443 zugeordnet ist. Wenn Sie eine
dunklere Benutzeroberfläche geöffnet und ausgeführt haben, werden Sie auch feststellen , dass Sie einen neuen Container haben dem der Name der
Anwendung ebenfalls ausgeführt wird. Und es zeigt dir den Hafen. Und Sie können klicken
, um alle Ports anzuzeigen. Das sind also alles visuelle
Hinweise und Beweise dafür , dass wir keine
containerisierte Anwendung haben. Und das ist ein Microservice. Und noch einmal, es ist nicht
auf Microservices beschränkt, sondern wird für Microservices empfohlen ,
da es
jedem Microservice ermöglicht , in
seiner eigenen Umgebung zu leben , unabhängig von allen anderen Diensten mit seinen eigenen Abhängigkeiten und allem, was er für einen effektiven Betrieb benötigt
. Und wieder ist es portabel. Wenn Sie Visual
Studio Code verwenden und die
Anwendung, die Sie hier haben,
containerisieren
möchten müssen Sie die Erweiterungen
für Darker abrufen. Wenn du also einfach zu Erweiterungen gehst und einfach nach
Docker suchen kannst, lass es installieren. Ich habe versucht zu
scrollen und es zu finden, aber Sie können einfach nach Darker
suchen
und die
Docker-Erweiterung installieren. Stellen Sie sicher, dass Sie
das von Microsoft erwerben. Und wenn Sie das haben, erhalten
Sie diesen Tab, auf dem Sie alle
Container sehen
können und er bietet Ihnen ein ähnliches, nun, ich
möchte nicht sagen, ähnlich, aber es gibt Ihnen
genügend Informationen im Vergleich zu dem, was Sie
in Visual Studio über
die laufenden Container erlebt
hätten , sowie verschiedene
Images, die Ihnen zur Verfügung stehen, wenn Sie lässt uns auf mehreren Bildern
diese spezielle App containerisieren. Das haben wir
in unserem Visual Studio-Code bereitgestellt. in Visual Studio Code Halten Sie in Visual Studio Code die Strg-Umschalttaste und P gedrückt, und Sie werden sehen, wie Traitor
alle Befehle anzeigt. Also Strg Shift
N P und das wird unsere Befehlspalette
starten. Und dann werden Sie hier sehen, dass E die Möglichkeit
hat, eine Docker-Datei
hinzuzufügen. Wenn Sie diese Option nicht sehen, können
Sie einfach
Docker eingeben und sie wird trotzdem
angezeigt. Erinnern Sie sich also an das Hinzufügen. Bei Docker Support geht es wirklich nur darum, eine Docker-Datei hinzuzufügen. Also, wenn wir
das auswählen und dann kann ich die Art der Anwendung
angeben
, die ich unterstützen möchte. Es ist also eine asp.net
Core-Anwendung. Und dann können
wir das Betriebssystem
noch einmal angeben und die Ports angeben. Ich verlasse den Hafen. Das ist in Ordnung für mich. Ich kann wählen, ob ich
eine Docker-Compose-Datei möchte, wir werden uns später
Docker-Compose ansehen,
jemand, der vorerst nein sagt. Und dann wird es
weitermachen und diese Docker-Datei für mich
mit einer sehr ähnlichen Syntax
generieren mit einer sehr ähnlichen Syntax wie wir sie gerade
in Visual Studio gesehen haben. Um diese API nun in Dark
von Visual Studio Code aus auszuführen, können
wir zum Debug-Tab gehen und dann kann ich
aus der Dropdownliste
das Darker Dotnet Lunch auswählen . Und dann mach weiter
und führe es erneut aus, sieh dir einige Aktivitäten hier
unten im Terminal an. Und wenn Sie genau hinschauen, werden
Sie feststellen, dass die Lunge
dem sehr ähnlich ist, was Sie vielleicht in
Visual Studio gesehen
hätten , als
es lief, aber im Hintergrund werden einige
Docker-Befehle ausgeführt. Und dann, nach einiger
Zeit, wir
unsere Dunkelheit nicht zum Laufen bringen. Und wir sehen Hello World. Es war ein einfacher API-Endpunkt , der einfach HelloWorld
zurückgeben würde. Wenn wir in unsere dunklere Benutzeroberfläche schauen, werden
Sie sehen, dass der neue Container auch mit dem Namen
läuft. Okay, hier
läuft der Port 32771
wieder, Sport 5099. Wir hätten also tatsächlich
angeben können, dass wir 84 für drei dafür haben
wollen. Ich hätte 80 Komma
443 sagen können, als es
mich nach den Ports fragte. Das habe ich nicht gemacht, aber ich möchte Sie
nur
wissen lassen, dass das
eine Option war , die zu
einem ähnlichen Mapping
geführt hätte wie hier. Jetzt wissen Sie also, wie
Sie
Ihre Dotnet
Core-Anwendung
sowohl mit Visual Studio als auch mit
Visual Studio Code containerisieren Ihre Dotnet
Core-Anwendung
sowohl mit . Natürlich
laufen wir immer noch im Debuggen. Also werde ich das Debuggen
beenden. Und das ermöglicht es uns, unsere Apps tatsächlich
zu
debuggen , während sie sich
in einem Container befinden. Wenn wir nun einfach noch einmal
die Schritte ausführen, um ein neues hinzuzufügen, lassen Sie mich ein neues Projekt hinzufügen. Es tut uns leid. Als wir das Projekt hinzufügten, hatten
wir die Möglichkeit, dunklere Unterstützung
hinzuzufügen. Also werde ich hier einfach
auf ein zufälliges klicken. Und wir hatten die Möglichkeit
, Docker zu aktivieren. All dies hätte
uns also ermöglicht, das Betriebssystem hier
auszuwählen, und dann
hätte es die bereits bereitgestellte
Docker-Datei generiert oder projiziert. Sie können es von
Anfang an tun, wenn Sie wissen, dass Sie es dunkler
verwenden werden, oder Sie
können es einfach nachträglich hinzufügen wenn Ihre Ambitionen diesen Punkt
erreicht haben. Nein, es ist erledigt. Es ist sieben. Es gibt Dotnet-Befehle
, mit denen wir unsere App tatsächlich in
einem Container
veröffentlichen können unsere App tatsächlich in
einem Container
veröffentlichen , ohne dass eine Docker-Datei
erforderlich ist. Eine Docker-Datei kann für jede Version
von Dotnet
verwendet werden und ist universell. Sie müssen sich keine Sorgen machen, wenn
Sie eine Docker-Datei verwenden. Aber wenn wir zurückkommen,
werden wir uns ansehen, wie wir native Dotnet-Befehle
verwenden können ,
um sie zu containerisieren oder zu erhöhen.
6. Containerize . NET App: In dieser Lektion
werden wir uns nun ansehen, wie wir ein Dotnet
up mithilfe von dotnet publish oder den
nativen dotnet-CLI-Befehlen containerisieren können up mithilfe von dotnet publish oder den
nativen dotnet-CLI-Befehlen . Nun, das ist einmalig, zumindest zum Zeitpunkt
der Aufnahme, um Seven zu dominieren,
und ich bin mir sicher, dass es in späteren Versionen verfügbar sein
wird. Bisher, Dotnet Six und darunter, benötigen
Sie immer noch die Docker-Datei. Wenn wir jedoch mit den sieben fortfahren, können
wir das schaffen. Ich werde einfach weitermachen
und ein neues Projekt erstellen. Und ich werde nur
Visual Studio für diese Demo verwenden, aber Sie können
gerne
mit Visual Studio Code weitermachen . Das meiste davon wird über die
Befehlszeile gesteuert. Aber ich werde
weitere Microservice-APIs erstellen. Ich werde
diesen Microservice
für API-Punkt-Container in der Demo aufrufen . Und lassen Sie uns weitermachen
und das erstellen. Ich füge keine Docker-Unterstützung hinzu. Ich ändere
nichts am vorherigen Setup. Und jetzt haben wir unser neues Projekt. Also dieses neue Projekt, wir müssen ein
neues Paket hinzufügen, oder? Also werden wir
den Befehl dotnet CLI verwenden. Ich verwende dotnet CLI,
weil jeder es
verwenden kann , egal ob Sie
in Visual Studio
oder Visual Studio Code sind . Also werde ich einfach das
Terminal hier in Visual Studio starten. Und ich werde
den Befehl dotnet
add package ausführen und wir fügen Microsoft.net Dot
Build Dot Container
hinzu. Also mach weiter und
installiere das Paket. Jetzt, wo das Paket installiert ist, können
wir es überprüfen, indem wir
einfach auf die CS-Projektdatei klicken und
Sie werden es hier sehen. Wenn wir nun
unserem Container einen Namen geben wollen,
gibt es Zeiten, in
denen wir möglicherweise
ungültige Namen als Projekte haben . Wenn Sie also den Namen
ändern möchten, können
Sie hier im
Bereich Property Group
des CSB Raj tatsächlich einen Knoten
hinzufügen . Und das wäre
Container und würde
meine Rechtschreibung richtig machen , Bild Nim. Und dann können
Sie ihm mit diesem Knoten tatsächlich einen anderen Namen geben. Also nenne ich es
einen Makro-Mikroservice. Strich, um einfach etwas zu schreiben. Es ist Microservice Punkt zu Punkt API Punkt Clinton
ist diese Demo. Ich möchte es einstellen, um
es einfach
Microservice Dash to Write zu nennen , nur um Ihnen zu zeigen
, dass wir
das eigentliche Bild umbenennen können , bevor
es veröffentlicht wird. Jetzt, wo ich bereit bin,
mit den Punktnetzen, wieder den
gelben, zu veröffentlichen mit den Punktnetzen, wieder den
gelben, kann
ich dotnet publish sagen , kann
ich dotnet publish sagen
und werde
das Betriebssystem spezifizieren. Also Dash, Dash OS, und ich bleibe
einfach bei Linux und Dash, Dash Arc. Und wir geben 64 an, um zu
zeigen, dass wir ein 64-Bit wollen. Dann sagen wir Slash t publish container und dann
C release. Bei all dem,
was wir hier tun, sehen
wir, dass wir die Release-Konfiguration wollen
, das ist der Strich C. Auch spezifiziert
das Dash Art
eine 64-Bit-Architektur. Und wir geben an, dass wir ein Betriebssystem
wollen, ein Linux-basiertes Betriebssystem. Wisst, wann der Befehl ausgeführt wird,
ihr werdet sehen, dass ich ein paar Logs
ausgedruckt habe, aber mach weiter, führe ihn aus. Drücken Sie Pause. Wenn es fertig ist,
können wir gemeinsam helfen. Aber am wichtigsten ist, dass
Sie das sehen, um das Image mit dem
angegebenen Containernamen zu erstellen . Wenn wir diesen
Container-Namensknoten nicht angegeben hätten, hätten
Sie
ein Bild erhalten,
das dem Projektnamen ähnelt , den
wir zuvor gesehen haben. Das sind also nur kleine
Kleinigkeiten , die Sie beachten können. Tatsache ist, dass jedes Mal, wenn wir dieses
Image ähnlich wie das Ganze konfigurieren müssen, die Docker-Datei alle
möglichen Umgebungen
einrichten , dh
falsch usw. Für den Container können wir hier
tatsächlich einen
anderen Knoten angeben. Wenn ich also, sagen wir, wir verwenden
dotnet 6.7 are, wollte
ich nur eine
Dotnet Six Runtime. Dieses Bild könnte ich tatsächlich
hierher kommen und das
Container-Image angeben und dann
den Namen des Images eingeben. Also schauen wir mal, ob ich
die Runtime für Dotnet Six haben will. Ich konnte MCR,
microsoft.com.net Slash Runtime
und dann das Tag für 6.0 sehen microsoft.com.net Slash Runtime . Okay, wenn ich
etwas anderes wollte, zum
Beispiel wenn ich
dieses Bild selbst taggen möchte , könnte
ich das spezifizieren. Und ich werde
diesen einfach entfernen. Es war ein Beispiel, aber ich könnte das Container-Image-Tag
angeben. Und dann könnte
ich meine eigene Version dieser bestimmten Jagd
oder
dieses Bildes festlegen , das ich veröffentliche. Nehmen wir an, nach einem Bugfix war
das Originalbild 1.2, 0.0. Aber vielleicht habe ich einen Bugfix gemacht. Ich weiß, ich möchte, dass das
1,2, 0,1 ist. Und wenn ich dann den
Befehl erneut ausführe, werden wir
sehen, dass wir ein brandneues
Bild mit dieser Tag-Version erhalten. Da haben wir es. Also führe ich den Befehl einfach erneut aus. Ich weiß, dass ich das neue Bild
mit dem Tag 1.0, 0.1 habe. Denken Sie jetzt daran,
die CS Bridge-Datei zu speichern , und
deshalb habe ich so viele Runs. Es ist mir passiert, als ich es zum
ersten Mal nicht gesehen habe. Wann immer Sie
hier eine Änderung vornehmen, müssen Sie dies überprüfen, da dies keine Build-Operation
ist, sondern eine unveröffentlichte Operation. Wenn Sie also nicht speichern, wird es nicht sehen, dass die Änderung
darin besteht , weitermachen und pushen zu können. Es gibt mehrere
andere Dinge, die
Sie bei der Konfiguration Ihres
App-Images von diesem Punkt aus hinzufügen können. Wenn Sie also mehrere Tags
haben möchten, können
Sie tatsächlich die Image-Tags eines
Containers sehen. Beachten Sie, dass sich das S
von Toggle unterscheidet. Und Sie können
verschiedene Versionsnamen
mithilfe alphanumerischer und semantischer
Versionierungstechniken angeben . Und Sie sollten
nur ein Semikolon verwenden um jedes Versions-Tag zu trennen. Sie können auch eine Elementgruppe hinzufügen , in der Sie weitere Metadaten hinzufügen können. Sie können also die
Container-Ports konfigurieren, die dieser Container haben soll,
sobald das Image erstellt wurde. Sie können auch eine
Container-Umgebungsvariable erstellen. Und das haben wir schon einmal
gesehen, insbesondere als wir
unseren SQL Server-Container einrichten unseren SQL Server-Container den wir
die Lizenzvereinbarung akzeptieren mussten. Also machen wir einfach weiter und
erstellen diese Variable. Jedes Mal, wenn der
Container das ausgibt, ist
dieser Variablenwert verfügbar. Hier wo es im
Logger sitzt Ausführlichkeit auf mich zurückführen. Das bedeutet, dass dieser Container
so viele Informationen ausspucken
soll , wie von unserem
Dotnet-Core-Up
generiert werden, okay, und wir wissen, dass
Core-Ups ein bisschen gesprächig sein können, also sollte er all
das an die Container-Konsole
ausspucken . Ein weiteres Beispiel für eine
Umgebungsvariable, die Sie möglicherweise festlegen möchten, wäre eine für die ASP NET Core-Umgebung. Also hier, wenn wir es lokal
ausführen, wird
es die
Entwicklung als
Umgebungsvariable verwenden. Wenn wir jedoch eine Veröffentlichung durchführen und eine
Konfigurationsversion durchführen, wird
diese Variable die Produktionsvariable sein. Wir könnten diese
Standardeinstellung tatsächlich überschreiben und sehen, wenn
Sie in diesem Container sind.
Ich möchte, dass diese
Umgebungsvariable Entwicklung oder QE Slash
Staging oder Produktion ist usw. So können Sie sich
also die Verwendung von
Umgebungsvariablen vorstellen . Sie können auch Labels
und Labels hinzufügen, helfen Sie einfach bei den Metadaten und der Auflistung,
wenn sie in der Registrierung enthalten sind. Wir können hier auch
die Registrierung angeben, aber dafür sind wir noch nicht ganz
bereit. Wenn das alles erledigt ist, kann
ich einen weiteren Push machen und das Image erstellen
oder dieses Bild aktualisieren. Das sind also wieder
Bilder, keine Container. Jetzt möchte ich mein Image
jetzt
tatsächlich ausführen , um sicherzustellen, dass
das Image existiert. Ich kann
zur dunkleren Benutzeroberfläche springen und zu den Bildern
gehen. Und dann wirst du
hier sehen, dass du alle Versionen
der Bilder
hast, die du veröffentlicht hättest, hier sein
sollten. Sie sehen hier also, das sind
1,0 Punkte, 0,1, 0,0, 0,1. Und wenn ich eine von beiden
auswähle, wird dieser
Abschnitt namens Ebenen angezeigt,
in dem alle Zeilen enthalten sind ,
die verschiedenen Schritte, die befolgt werden
sollten, um endlich den Container
für diese Anwendung zu erstellen. Wenn ich zu Images gehe, wirst
du sehen, dass es
das DBN-Image verwendet , weil
ich gesagt habe, dass ich
Linux will und es verwendet mein
Image, das ich erstellt habe. Um dies auszuführen, könnten
wir tatsächlich auf
das Bild und dann auf Ausführen klicken. Eigentlich mache ich das nicht
gern, oder? Ich bevorzuge es, die Befehlszeile zu
verwenden. Jetzt
siehst du neben ihr, wie du die Nabe ziehst und drückst. Das ist also unser lokales Bild,
also gibt es nichts, woran wir herankommen könnten. Aber wenn wir eine Umfrage
machen, bedeutet das, dass Sie die aktualisierte
Version dieses Bildes erhalten, insbesondere wenn es die neueste sein
soll. Wie Sie gesehen haben, konnten
wir
das Bild mit demselben Tag aktualisieren. Wenn es also Updates
für diese Version gibt, können
wir sie jederzeit abrufen und
es wird ein Update durchgeführt. Wir können den Hub auch pushen, was bedeutet, dass
wir hier von
unserem lokalen Repository
zum Docker Hub pushen . Ich hätte
dir schon gezeigt, wow, das sieht zumindest aus wenn die IVR den Hub
weiter drückt, du kannst deinen eigenen
Container im Hub sehen und du kannst ihn bei
Bedarf auf
jeder anderen Maschine wieder herunterziehen und anfangen zu arbeiten. So einfach ist es also, Ihren Container zu gedenken,
wenn Sie ihn erstellt haben. Lassen Sie uns weitermachen und
diesen neuen Container ausführen. Ich werde also ein Terminalfenster öffnen und
dieses vergrößern. Ich entschuldige mich also, wenn die Verwendung des in Visual Studio Ihre Augen
verletzt. Was ich zu wissen hoffe. Also verwende ich ein Terminalfenster. Ich bin bereits
zu dem Verzeichnis gegangen, in dem sich unsere API-Demo für
Microservice-Tools befindet. Und was ich hier tun werde, ist einen Befehl
auszuführen, der Docker run
sagt. Wir haben diesen
Docker-Run-Befehl also schon einmal gesehen, oder? Ich gebe Dash an,
IT, spezifiziere einen Port. Also werde ich dem sagen
, dass ich möchte, dass es läuft. Auf Port 80. 80 und das sollte bis Port
84 enden, gelber Verkehr. Ich möchte
nichts komplizieren und verwende 443. Und dann gebe ich
den Namen des Bildes an. Also Microservice-Bindestrichwerkzeug, und ich kann das
Ziel angeben, ob ich will oder nicht. Lassen Sie mich also einfach
weitermachen und die Eingabetaste drücken. Mal sehen, was passiert. Sie sehen also, dass Sie ein
Bild mit dem neuesten finden können. Es ist also sehr wichtig
, dass Sie
das neueste Tag für alles festlegen , was
standardmäßig abgerufen werden soll. Lassen Sie mich also weitermachen
und das Tag angeben, das ist 1,0, 0,1, und versuchen Sie es dann erneut. Und dieses Mal wird es
tatsächlich einige Protokolle
ausspucken , die wie
Asp.net Core-Anwendungsprotokolle aussehen . Was passiert also, wenn ich versuche
, die Bewerbung zu erreichen? Also haben wir gesagt, dass die
Anwendung auf Port 80, 80 live
sein sollte . Also, wenn ich
einen Browser aufrufe und zum
lokalen Host-Port 80, 80 gehe . Und dann gebe ich
Wettervorhersagen ein, was der Endpunkt ist
, der an dieser API liegt. Wir sehen, dass wir unsere API
zurückbekommen. Und wir werden
auch sehen, dass wir
eine kleine Nachricht über
die HTTPS-Umleitung haben eine kleine Nachricht über ,
das ist vorerst in Ordnung. Wenn wir in die dunklere Benutzeroberfläche schauen, werden wir feststellen, dass auch ein neuer
Container läuft. Und dieser ist, ich
weiß nicht , wie dieser Name
lautet, aber auch hier hätten
wir den Namen im Docker-Lauf
angeben können, wenn wir gewollt hätten. Wenn ich darauf klicke, siehst
du, dass es hier auch Logs
ausspuckt. Sie können sich die
Protokolle also von der Konsole aus ansehen, Sie können die
Protokolle von hier aus ansehen. Und eigentlich der
Grund, warum es auf die Konsole
ausspuckt , mit der es gestartet wurde. Lassen Sie mich das einfach beenden und
den Run-Befehl wiederholen. Der Grund, warum es
die Konsole übernimmt , ist, dass wir den Strich d
nicht angegeben haben, was bedeutet, dass wir wollen, dass
es hier als Daemon läuft, der im
Hintergrund läuft. Es ist, es entlastet die Konsole. Okay, das ist ein weiterer
kleiner Leckerbissen, den Sie verwenden können ,
um die Konsole freizugeben wenn Sie
Ihren Docker-Container ausführen möchten, aber nicht möchten, dass er die Konsole
übernimmt. Also hier
läuft der Docker-Container wieder. Ich musste einfach
aus- und wieder einsteigen. Und du wirst sehen, dass es wieder
läuft. Und wir können die Konsole von
hier aus betrachten , ohne unsere lokale Konsole zu
übernehmen. Jetzt sehen Sie, wie
Sie
Ihre Dotnet
Core-Anwendung mithilfe
Ihrer Dotnet-CLI-Befehle
und bestimmter Konfigurationen containerisieren Ihre Dotnet
Core-Anwendung mithilfe
Ihrer Dotnet-CLI-Befehle können. Lesen Sie die Dokumentation, in der
Sie herumspielen können, und
nehmen Sie verschiedene Konfigurationen vor
, die zu Ihnen passen. Aber das überlasse ich dir. Wenn wir jetzt zurückkommen, werden
wir uns ansehen, wie wir Docker-Compose verwenden können, um die Orchestrierung
mehrerer containerisierter Apps zu handhaben .
7. Orchestrierung mit Docker Compose: Wir haben also bereits eine Vorstellung davon was Container-Orchestrierung ist. Container-Orchestrierung bedeutet
im Grunde, dass wir
mehrere Container haben und
in der Lage sein müssen Feiertagsbeginn
zu orchestrieren. Warum fangen sie an? Wenn, wenn das eine vom anderen abhängt, welches zuerst startet usw. Es gibt
also mehrere Dinge, die wir
für unsere Container einrichten müssen , bevor
das Wort tatsächlich beginnt. Also, wenn ich
beispielsweise eine
Microservices-Anwendung habe beispielsweise eine
Microservices-Anwendung und all diese Microservices in ihren eigenen Containern
existieren. Damit die Anwendung ausgeführt werden kann, müssen jedoch alle diese Apps gleichzeitig ausgeführt werden . Dann möchten wir
sicherstellen, dass wir
eine sehr wiederholbare Methode haben eine sehr wiederholbare Methode sie alle gleichzeitig
laufen zu lassen. Hier kommt Docker
Compose ins Spiel. Also werde ich einfach
weitermachen und
unserer zweiten API
dunklere Unterstützungen hinzufügen . Und indem Sie einfach mit der
rechten Maustaste klicken und dem Assistenten
folgen, wissen
Sie natürlich , dass Sie das auch in
Visual Studio Code tun können. Aber jetzt haben wir eine
Docker-Datei, die
in diesen beiden Apps vorhanden ist. Wenn ich jetzt erneut mit der rechten Maustaste klicke, kann
ich tatsächlich Container
Orchestration-Unterstützungen hinzufügen. Wenn ich also darauf klicke,
werde ich gefragt, okay, welchen Orchestrator
möchte ich verwenden? Und standardmäßig habe ich
Docker Compose dort. Also mache ich einfach
weiter und klicke auf OK. Bestätigen Sie, dass ich das Linux-Betriebssystem verwenden möchte
. Und das wird
ein neues Projekt mit
einigen neuen Dateien generieren . Die erste Datei hier
ist eine dunklere Ignorierung. Ähnlich wie bei unserer
Gitignore-Datei gibt es bestimmte
Dinge, die wir nicht unbedingt mit dem
Container und allem anderen
mitbringen müssen . Es heißt also nur,
ignoriere all diese und kompiliere
alles andere. Wir haben auch die
Raseneinstellungen, die JSON, die uns eine von Docker Compose
gestartete sitzende AUC gibt , hier. Jetzt übernimmt es die Oberhand.
Wir können einfach Docker-Compose sagen und das
einmal hier in Visual Studio ausführen . Damit können wir einfach alles starten
, was die
Docker-Compose-Datei sagt. Nein oder Docker. Die
Docker-Compose-Datei besteht aus zwei Teilen. Wir haben den dunkleren Bindestrich Compose und wir
haben den Override. Or Override können wir
bestimmte Einstellungen angeben , die wir für jeden Container
wünschen. Lassen Sie mich hier also zuerst
von der Hauptdatei ausgehen. Hier sehe ich, dass ich
werde, dass die Version eingestellt wurde. Ich bin nicht bereit, das zu ändern. Und dann haben wir einen
Bereich für Dienstleistungen. Und dann haben
wir unter Services unseren ersten Dienst
, den Microservice, wir spezifiziert hatten. Wir möchten Orchestrierung
und Unterstützung für hinzufügen. Also wird er sagen, nun, wenn ich diesen Container ausbaue, nenne
ich
das Image, wie auch immer
der generierte Name
ist, einen Bindestrich diesen Namen. Und dann werde ich
mit dem Kontext gut bauen,
unabhängig davon, wo sich das Projekt befindet, und die Docker-Datei oder die
Setup-Anweisungen ,
wie dieser Container generiert werden
soll, gibt es in der Docker-Datei
in unserem Projekt. Also für so viele Anwendungen
wie Sie, die
Sie haben , müssen Sie
bei der Entwicklung gleichzeitig starten. Sie können Orchestrierung
und Unterstützung hinzufügen. Ich kann also auch
Orchestrierung und
Unterstützung zum zweiten
Microservice und
das dritte n zum
n hinzufügen Unterstützung zum zweiten
Microservice und . Wenn ich das also noch einmal mache
und
dieselben Einstellungen angebe, dann werden Sie
sehen, dass ich jetzt
einen zweiten Microservice
hier in dieser Datei habe . Nett und einfach. Wenn ich also
zur
Docker-Compose-Datei übergehe und sie größer wird, weil wir
jetzt über zwei verschiedene Dienste und so
viele Dienste wie Sie haben, haben
Sie möglicherweise R-naught überschrieben. Aber hier spezifizieren
wir, dass die Umgebung Entwicklung
sein sollte. Das können wir jederzeit
an unsere Bedürfnisse anpassen. Solange wir also in Visual
Studio sind, wird
diese
Umgebungsvariable natürlich auf jeden Fall in der Entwicklung sein
wollen. Wir können angeben, dass wir HTTPS- und HTTP-Ports
wünschen. Da haben wir es. Dann können wir die Volumina angeben. einem Band in dunklerem Orange ist die
Containerisierung also im
Grunde eine Ära Lagerung, der Persistenz. Wenn der Container
läuft, wollen
wir die Daten also nicht
verlieren. Als wir den Container gestartet
haben, sollte
er sich daran erinnern, wo er
zuletzt war. Das ist also besonders
wichtig für Datenbankcontainer und fertige
Sketch-Container usw. Wenn wir
also Volumen sagen, sagen
wir nur,
dass wir die Geheimnisse des Benutzers
speichern wollen . Wir wollen auch
bestimmte andere
Konfigurationen speichern , okay? Was auch immer diese
Konfigurationen sind, bitte behalten Sie sie bei, auch wenn
ein Container nicht läuft. Jetzt haben wir
einen kurzen Überblick darüber unsere Containerisierung oder Docker
Compose wirklich aussieht, oder Docker Compose
und Override Dateien. Lassen Sie uns weitermachen und
sehen, was passiert , wenn wir mit Docker Compose arbeiten. Also drücke ich einfach auf Run. Und in unserem Browser läuft
unser erster Micro-Service. Jetzt wurde der erste Micro-Service mit Swagger-Unterstützung
erstellt. Wir sehen, wie wir diesen Endpunkt erreichen
können. Aber wenn ich
zu Visual Studio zurückkehre, werden
Sie im Abschnitt
mit den Containern feststellen, dass ich den
Microservice-On-Container habe, also habe ich einen
vorhandenen dafür. Es erstellt also einen
brandneuen Container der auf dem Docker Compose
basiert. Und es erstellt einen Container für den zweiten Microservice. Und wenn Sie nur einmal darauf klicken
, konnten
diese beiden Dienste gestartet werden, die möglicherweise voneinander abhängen oder
auch nicht. Wenn ich in die dunklere Benutzeroberfläche schaue, werden
Sie feststellen, dass ein neuer Docker
Compose-Abschnitt erscheint. Und dieser Docker
Compose-Abschnitt enthält beide Container für
die Microservices. Es hat auch die verschiedenen
Anschlüsse für jeden. So kann ich problemlos nach
einem der beiden suchen. Und ich kann sie einfach alle
mit einem Stopp stoppen. Ich hätte es auch von Visual Studio aus
stoppen können,
wahrscheinlich hätte ich es auch von Visual
Studio aus stoppen sollen. Jetzt, wo wir verstehen wie Docker Compose und
Orchestrierung funktionieren. Und es gibt noch eine weitere
Ebene, auf wir
Kubernetes 0s einführen würden, das viel mehr kann, als
nur Container hochzufahren. Aber das schauen wir uns später
kurz an. In der nächsten Lektion wechseln
wir zu Microsoft Azure
und erstellen unseren Container
Registry Service. Und dann schauen wir uns an, wie wir
unsere Container in diese Registrierung verschieben können .
8. Azure Container Registry: In Ordnung, also lasst uns einfach zurück zu
unserem Portal
springen unserem Portal und nach dem Container Registry
suchen. Das ist also ein Suchcontainer. Und wir wollen Register. Und wir werden
unser eigenes Container Registry erstellen. Also
werden wir wie immer dieses Formular
ausfüllen. Also füge ich es in die
übliche Ressourcengruppe ein. Ich habe ihm einen Namen gegeben. Und beachten Sie, dass es sehr
strenge Benennungsregeln gibt. Also Bindestriche, ich bin kein Fan oder
Sonderzeichen sind nicht erlaubt. Also nenne ich meins
nicht ACR. Und wenn ich den für mich besten
Standort
auswähle, verwende ich den grundlegenden Skew. Das wird also ein
bisschen Geld kosten. Seien Sie sich dessen also bewusst. Lassen Sie uns also weitermachen und
überprüfen und erstellen. Sobald das erledigt ist, können wir zu unserer Ressource
springen. Jetzt haben wir das
übliche Dashboard und es zeigt uns, wie
viel Speicherplatz wir haben wie viel davon genutzt wird. Wir haben sogar eine öffentliche
URL zu unserer Registrierung. Denken Sie also daran,
dass es sich zwar um
eine öffentliche URL handelt, die privat Wenn Sie
also Microsoft als Ihre eigene,
integrierte Benutzerverwaltung wird
. Wenn Sie
also Microsoft als Ihre eigene,
integrierte Benutzerverwaltung
und was auch immer Sie in
Ihrer Organisation verwenden, können
Sie Ihrer privaten Registrierung
Ihre eigene Sicherheit hinzufügen ,
um sicherzustellen dass Entwickler
Container-Images entsprechend abrufen,
pushen und patchen können . Wir haben auch die Repositorys
, mit denen wir
unsere Tools verbinden können , um sie
verwalten, abrufen und pushen zu können. Wenn ich also zu den Zugangsschlüsseln übergehe, kann
ich mich
als Admin-Benutzer anmelden. Also hier ist ein Registrierungsname,
der der Anmeldeserver ist und
die Admin-Benutzeranmeldeinformationen verwendet. Jetzt, wo ich Zugriff auf den Benutzernamen und
das Passwort
auf Admin-Ebene
habe, kann ich mein Terminal starten. Und ich werde ein Docker-Login
ausführen, gefolgt vom Namen
unserer Login-Serveradresse, was in meinem
Fall ist, ist es Pferd, ECR-Punkt als Ihre CR? Also mache ich weiter
und drücke die Eingabetaste. Dann wird es
mich nach dem Benutzernamen fragen. Also werde ich diesen Teil einfach kopieren
und einfügen. Und dann das Passwort, das ich natürlich einfach aus
dem Portal kopiere und das Terminal
benutze
und die Eingabetaste drücke. Und dann werde ich hier sehen,
Logan hatte Erfolg. Jetzt habe ich nur den
Bildschirm gelöscht, damit wir eine neue Tafel
haben können . Eine Alternative zur Verwendung
des Docker-Logins
wäre jedoch die Verwendung des
Befehls bash ist ein Login. Sobald du das
getan hast, wirst du das
aus machen, Null aus. Authentifizierung
gegenüber Microsoft als Nullen und Einsen, Sie sind
authentifiziert. Sie können dann sehen, ob es sich um eine ACR-Anmeldung
handelt und dann den Namen
der Registrierung angeben , mit der
Sie sich verbinden, was wäre, ist das grob? Und Sie müssen nicht den vollständigen Anmeldeserver einrichten, sagen Sie
einfach den Namen
der Registrierung und das würde Sie genauso in die
Registry einloggen. Das sind also zwei Möglichkeiten
, wie Sie
sich tatsächlich authentifizieren können . Schauen wir uns nun an, wie wir
das Bild verschieben. Also werde ich
das Docker-Image
für unser Microservice-Tool
nur verwenden für unser Microservice-Tool , weil es
einen kürzeren Namen hat.
Es ist einfacher, diesen Namen einfach zu
verwenden. In Ordnung, also
Microservice-Dash Two, das werden wir
vorantreiben, um der Geschichte einen Schub zu geben. Also beginnen wir
mit diesem Befehl-Docker-Tag. Und dann habe ich den Namen
und die entsprechende
Version
angegeben , weil wir nicht über elitär gesprochen haben. Also gebe ich hier nur
die Version an. Und ich markiere es mit einem Alias das sich auf die Registrierungsadresse bezieht
, unter der es gefunden werden soll. In Ordnung, also was bedeutet das? Das bedeutet, dass ich
dieses lokale Image nehme und es an diese Adresse
in diesem Repository
pushe, und es sollte so heißen. Wenn
Sie jetzt kein Tag angeben, wird
es automatisch als
das neueste gekennzeichnet. Wenn ich also dieselbe Version behalten
möchte, kann
ich natürlich einfach weitermachen und die Version entsprechend
angeben. Nun, ich habe die
Version dieses Trichters belassen. Wenn ich also diesen
Tag mache, drücke ich die Eingabetaste. Der zweite Schritt
wäre, einen Push zu machen. Also wollte ich Docker Push sagen. Und dann werde ich das
Container-Image mit Null-Alias übertragen. In Ordnung? Und dann wird das jetzt wieder eine Verbindung
zu unserer Registrierung herstellen. Es wird das
Standard-Tag latest verwenden und es an diese Adresse senden. Also dieser Registry-Schrägstrich, das nennen wir ein
Repository und dieser Name. Wenn das also abgeschlossen ist, wenn ich zurück
zum Portal gehe
und in den Repositorys nachsehe, werde
ich nicht sehen, dass ich das als unser Repository
habe. Und wenn ich darauf klicke, sehe
ich, dass ich das neueste Tag
hier mit diesem Bild verknüpft
habe . Ordnung, und dann
kann ich von hier aus tatsächlich eine
Umfrage machen, wenn ich
möchte In Ordnung, und dann
kann ich von hier aus tatsächlich eine
Umfrage machen, wenn ich
möchte, und
das nach Belieben aus der Registrierung abrufen. Dies ist eine gute
Möglichkeit,
Ihre Anwendungen
containerisiert und in
einer Registrierung zu halten Ihre Anwendungen
containerisiert und in , sodass
Entwickler
vorbeikommen und sie einfach abrufen können ,
wenn sie bereit sind. Und wenn Sie
ein Team haben, das rotiert, und Sie haben komplexe
Umgebungseinstellungen. Das ist sehr,
sehr wichtig und einfach
zu bedienen , denn dann können
sie
diese Images einfach herunterladen und die Anwendung in
ihrer Umgebung
mit minimalem Einrichtungsaufwand ausführen . Also, wenn ich das kopiere und dann direkt danach
einen Docker-Pull mache , starte
ich einfach
das Terminal neu und füge That's a darker pool ein
und es zieht direkt aus dem Repository mit dem
Tag latest und drücke die Eingabetaste. Dann können Sie zur Liste der
Bilder in der dunkleren
Benutzeroberfläche von Docker Desktop wechseln , und Sie werden sehen, dass dieses Bild
hier zur Verwendung verfügbar ist. Ordnung, also kann ich einfach
darauf klicken und
die Anwendung starten und ausführen oder
meinen Docker-Run-Befehl verwenden , den ich lieber verwende, und ihn
tatsächlich verwenden. Eine weitere Möglichkeit,
alle Images zu sehen , die
Sie haben, besteht darin, den Befehl docker images zu verwenden. Und das
listet alle derzeit verfügbaren Bilder derzeit verfügbaren sowie ihre IDs auf. Wenn ich also ein Bild
entfernen möchte, sagen
wir, ich möchte
Version 1.0 von meinem Computer entfernen . Ich kann diesen ID-Wert annehmen. Dann sehe ich eine dunklere RMA, die Abkürzung für Remove
Image and Paste in That ID, und dann wird sie für mich gelöscht. Ebenso kann ich, wenn ich Docker Desktop
verwende, immer einfach zum
Bild gehen und die Taste drücken. Sie sehen also, dass Sie zwischen dem UI-Zeug und
den Befehlen
abwägen können. Aber zumindest
wissen wir jetzt, wie wir
unser Image in unsere Registrierung
auf Microsoft Azure übertragen können. Dann können wir mit dieser Registrierung so
viele Pools erstellen, wie wir benötigen. Das ist wieder einmal
großartig für die Organisation. Alle vier Behälter für
unterschiedliche Anwendungen. Darauf muss unser Entwicklungsteam möglicherweise im
Laufe der Zeit zugreifen.
9. Azure Container-Instances: Lassen Sie uns nun zu
unserem Portal zurückkehren und
zu unserem Container
Registry-Service übergehen . Jetzt haben wir das Konzept das
Image
tatsächlich als Container bereitzustellen. Wir haben es lokal gemacht, lassen Sie uns das in der Cloud machen. Jetzt gibt es mehrere Möglichkeiten. Die einfache Methode, die ich Ihnen
in dieser Lektion zeigen werde, besteht darin, die als Ihre
Container-Instances zu verwenden. diese Weise können wir Container im laufenden Betrieb auf
der Grundlage
eines Images
bereitstellen der Grundlage , das in der Cloud gehostet
wird. Wenn ich also
zu den Repositorys gehe und mir unser veröffentlichtes
Bild hier
ansehe, sehen
Sie, dass Sie die
Möglichkeit haben, zu dem Tag zu wechseln unser veröffentlichtes
Bild hier
ansehe, sehen
Sie, , der spezifischen Version,
die Sie möchten. Und dann können Sie sehen, dass Run-Instances für die Web-App
bereitgestellt werden. Also werden wir beides machen. Fangen wir
mit Ron Instance an. Hier. Es wird das Erstellungs-Blade für
die Container-Instance starten. Also nenne ich
diesen Mikroservice einfach Dash Two, weil das der
einzige ist, den wir klarstellen. Microservice-Strich zwei, wir
belassen alles bei der Standardeinstellung verwenden dieselbe Ressourcengruppe,
den entsprechenden Standort. Wir können die
Ressourcen angeben, die wir für diesen Container benötigen, und wir können angeben, dass wir eine
öffentliche IP-Adresse benötigen. Ich werde ja sagen. Und ich lasse es jetzt an Port 84
senden. Und lass uns einfach
weitermachen und auf Erstellen klicken. Und sobald dieser
Erstellungsprozess abgeschlossen ist, können
wir
zur Ressource wechseln. Und von dort aus haben wir unsere Microservice-Anwendung in
Container-Instances
bereitgestellt. Also hier können wir diesen Container neu starten, stoppen, entfernen. Und wir werden hier sehen, dass
ein Container im
Container-Instance-Dienst
läuft und dass wir eine öffentliche IP-Adresse haben. Jetzt können Sie einen
vollständig qualifizierten Namen erhalten, aber Sie würden
diesen Wert in der Regel festlegen , wenn
Sie
entweder das Porto
Wizard Setup durch
die normalen Schritte gehen entweder das Porto
Wizard Setup durch , in denen Sie alles eingeben
müssen, die Grundlagen und das
Netzwerk, top usw. usw. Oder wenn Sie den Befehl verwenden. Also haben wir vorerst
den einfachen Weg gewählt und
können zurücktreten und uns ansehen
, wie der Zauberer aussieht. Aber im Moment suche ich
einfach über diese
öffentliche IP-Adresse
zur diploiden API. Also, wenn ich einen
neuen Tab öffne und
diese öffentliche IP-Adresse eingebe und einfach den Wettervorhersage-Endpunkt
eintippe . Weil das das einzige ist,
was da ist. Und lassen Sie mich meine Rechtschreibung korrigieren und es erneut versuchen. Da haben wir es. Also hier stoßen wir auf die diploide API in
diesem Container. Und dieser Container läuft auf unserem Container
Instance-Dienst in der Cloud. Wenn wir einen vollständig
qualifizierten Domainnamen hinzufügen
, können wir ihn natürlich über diese Adresse
beheizen. Jetzt nur noch
ein bisschen Geld rausholen und rüber zum Wizard für
die Erstellung
einer Container-Instance. Wenn Sie es sich ansehen,
füllen Sie die grundlegenden Informationen aus, wir wissen das alles bereits. Wir haben mehrere Skew-Optionen, aber dann hängt
die Verfügbarkeit von unserer Region ab. Sie können also aus Ihrem eigenen Grund mehr darüber lesen. Wenn Sie nicht sehen,
was Sie möchten. Wir können unsere Bildquelle wählen. Wir können die
Schnellstartbilder haben, in denen wir einfach eines dieser
Beispiele auswählen
können. Oder wir können
aus unserer Registrierung wählen, was wir im Grunde getan haben. Wir könnten also einfach nach
der entsprechenden Registrierung und
dann nach dem entsprechenden Image
und dann nach der gewünschten
Version suchen der entsprechenden Registrierung und
dann nach dem entsprechenden Image . Wir können die Größe
des Containers ändern. Und dann können wir uns andere Register
ansehen,
unabhängig davon, ob es sich um öffentliche
oder private Register und die
Anmeldeinformationen entsprechend angeben. Jetzt ist es natürlich wahrscheinlich
besser, alles in
Azure zu haben und nicht
einige Dinge auf Docker Hub
und einige Dinge auf einer Null zu haben . Natürlich möchten Sie auf der Grundlage Ihrer Knie, Ihrer Architektur
und Ihrer Organisation die
bestmöglichen Entscheidungen treffen. Da dies jedoch ein Kurs
ohne Entwickler ist, werden
wir alles darauf abzielen,
alles in
Microsoft do Europe zu belassen. Für den Netzwerkteil können
wir nun eine öffentliche,
private oder keine IP-Adresse wählen . Wir können auch dieses
Domain-Label wählen, diese DNS-Ebene. In Ordnung? Das DNS-Namenslabel für
die öffentliche IP-Adresse
wird also Teil
eines vollqualifizierten Domainnamens oder FQDN sein, der für den
Zugriff auf den Container verwendet werden kann. Das war also das
fehlende Stück bei
der anderen Methode, mit der wir diesen ACI oder
Container für unser Image
erstellt haben. Wenn wir auf Fortgeschrittene umsteigen, sehen
wir, dass wir hier eine gewisse
Menge Orchestrierungssauerstoff haben . Wir können also unsere
Neustartrichtlinie einrichten, in der wir sagen, wenn vielleicht ein
Fehler auftritt oder etwas passiert, möchte
ich
den Container neu starten? Ich kann sagen, wenn etwas passiert, bedeuten
Neustarts immer, dass es einen regelmäßigen Neustart geben
wird. Das heißt nie, dass es
läuft, bis ich es stoppe. Und dann können
wir natürlich
, nachdem wir all diese eingegeben haben, Notizen erstellen. Sie können auch
Ihre Umgebungsvariablen für
diesen bestimmten Container angeben Ihre Umgebungsvariablen für , den Sie gerade einrichten. Das ist also die ganze Funktionsweise von
Container-Instances in unseren Azure
Container Instances. Jetzt gab es natürlich eine
Option, mit der wir
es in einer Web-App
hätten bereitstellen können. Wenn wir also zurückkommen, werden
wir uns einen Web App Service
ohne Container ansehen.
10. In Azure Container-Instances veröffentlichen: In dieser Lektion
werden wir uns den Feinheiten der Erstellung
eines containerisierten
Web-App-Dienstes befassen. Wir
werden es nicht wirklich erstellen. Wir werden
uns nur einige
der verschiedenen Einstellungen ansehen , die
wir beachten müssen. Wenn ich also auf Erstellen klicke, gehen
wir zu den Grundlagen über. Natürlich wissen wir, dass wir
die grundlegenden Informationen
mit unserer Ressourcengruppe ausfüllen . Ich werde
diesen speziellen Namen geben. Ich sage nur
Microservice-Strich zwei Striche. Etwas Einzigartiges, von dem ich
sicher bin , dass es sonst niemand
im Internet hat. Und wie werden
wir dann veröffentlichen? Also haben wir uns vorher den Code
angesehen. Was ist, wenn ich zum
Docker-Container gehe? Wenn ich also auf den Docker-Container klicke und feststelle, dass ich gefragt
werde, welches Betriebssystem
wir bisher verwendet haben, also muss ich das nicht ändern. Ich werde die beste
Region verwenden, die meinen Bedürfnissen entspricht. Und dann spezifiziere ich
eine neue Serviceanlage. Beachten Sie also, dass ich
den Code Service-Plan nicht verwenden kann , da das Hosting-Modell
anders ist, wenn es kalt Dann können wir
den vorhandenen
Serviceplan, den wir von Anfang dieses Kurses
hatten, wiederverwenden den vorhandenen
Serviceplan, den wir . Da ich mich jedoch für einen
Docker-Container
entscheide, muss ich einen neuen erstellen und ich bin keiner, der sich für
die Premium-Preise entscheidet. Ich kann immer noch
den kostenlosen Preis bekommen, also wähle ich einfach den aus. Und wenn wir dann in
die dunklere Wanne gehen, haben wir hier mehrere
Möglichkeiten. Ich kann einen einzelnen Container
gegenüber einem Docker Compose wählen. Und beachten Sie, dass sich das
immer noch in der Vorschau befindet. Wenn ich also
einen einzelnen Container auswähle, mit dem ich die Bildquelle angeben
kann, möchte ich ihn
von Docker Hub, einer anderen
privaten Registrierung, verwenden . Also eine düstere ganze Band, ECR oder ein
Container Registry ohne Inhalt. Dies sind nicht die
einzigen beiden Register. Und manchmal müssen
Sie möglicherweise
Ihre eigene Registrierung in Ihrer
eigenen Umgebung bereitstellen , oder? Das sind also alles Optionen. Aber wenn ich meine Azure
Container Registry
auswähle, kann
ich dann die Registrierung
auswählen, das Bild und sein Tag auswählen. Ich kann einen
Startbefehl setzen, wenn ich möchte. Gehen Sie zum Networking über. Ich bin so ziemlich alles
andere bleibt gleich. Was auch immer Sie
bereits gewohnt
sind, kennen Sie, wenn es um Azure-Web-Apps
geht. Die Verwendung des dunkleren Workloads für den Azure Web App Service wäre ein sehr ähnlicher
Balken, da nein, wir verwenden Docker-Container. Und natürlich stehen uns
all diese Optionen zur Verfügung, wenn
es um
die Aktualisierung der Tags und die
kontinuierliche Entwicklung und den kontinuierlichen Einsatz geht, sobald
wir sie bereitgestellt haben. Aus Zeit- und Kostengründen werde
ich jedoch nicht fortfahren. Natürlich können Sie mit einem kostenlosen Kontingent fortfahren. Denken Sie jedoch daran, dass die Container Registry und die
Container Instances Kosten verursachen. Sie können also experimentieren
und entsprechend alle Informationen erhalten, die
Sie benötigen. Ich werde jedoch hier aufhören. Wenn wir also zurückkommen, werden
wir
einen kurzen Blick auf Kubernetes 0s werfen, nur ein bisschen Theorie. Auch hier handelt es sich nicht um einen ausführlichen Kurs über
Docker und Orchestrierung. Es gibt eine Menge zu lernen. Ich wollte
Ihnen nur ein Gefühl dafür geben wie Container funktionieren. Wir können unsere
Images auf Azure platzieren und auf diesen Images
basierende Anwendungsinstanzen zusammenstellen. Wenn wir also zurückkommen, werden
wir uns
einige Theorien rund um
Kubernetes 0s ansehen und
ein Verständnis dafür bekommen , wie es in diesem aktuellen Kontext
funktioniert.
11. Azure Kubernetes-Serviceübersicht: Ordnung Leute,
also in dieser Lektion wir nur einige
der Grundlagen rund um
Kubernetes durchgehen , es ist nur eine Theorie. Wir werden uns
nicht mit Kubernetes befassen, ist ein ganz anderes Spiel. Wir werden also nicht auf Details und Diskurse eingehen, aber ich möchte, dass Sie verstehen, warum Sie normalerweise
von Kubernetes hören ,
wenn Sie
von Dunkler und Containerisierung hören . Kubernetes bietet einen
zuverlässigen Planungs- und Orchestrierungsmechanismus für fehlertolerante
Anwendungsworkloads. Das ist eine ganze Menge
großer Worte, um zu sagen, dass es uns die Möglichkeit
bietet ganze
Container
zu verwalten, d. h. die Bereitstellung, die Bereitstellung wird auf der
Grundlage verschiedener Metriken neu gestartet. Wir können Kubernetes
also tatsächlich
verwenden um verschiedene Regeln für die
Verwaltung
oder Orchestrierung von Containern einzurichten . Nochmals, für Cloud-native oder auf Microservices
basierende Anwendungen ist
dies sehr wichtig, da es
mehrere bewegliche Teile gibt , die funktionsfähig sein müssen und
wahrscheinlich individuell
skaliert werden müssen. Mit Kubernetes
können wir also all das orchestrieren. Wir können einem
der Dienste mitteilen, dass wir am Tag
drei Container
benötigen. Ein anderer muss zu
einem anderen muss nie skalieren. All diese Dinge sind mit Kubernetes
möglich. Dazu verwenden wir einen
deklarativen Ansatz, es uns ermöglicht,
diesen deklarativen Ansatz
für Deployments zu verwenden . Und es wird durch eine Reihe robuster
APIs für unsere
Verwaltungsanforderungen unterstützt . Es bietet Container-Management zum Organisieren,
Hinzufügen, Entfernen oder Aktualisieren von bis zu mehreren
Containern gleichzeitig. Wenn wir
Kubernetes verwenden, können wir jetzt nützliche Aufgaben
wie Selbstheilung,
Skalierung,
Netzwerkmanagement, Speicher,
Container-Updates und
geheime Verwaltung
abstrahieren Skalierung,
Netzwerkmanagement, Speicher, . Der Grund, warum diese Liste so
wichtig ist , ist, dass wir gesehen haben, dass einige
dieser Herausforderungen,
als wir uns mit
der Containerisierung befasst haben , gestiegen sind. In Ordnung. Wir haben festgestellt, dass wir
sehr darauf geachtet haben, welche IP-Adresse oder besser gesagt welche Portnummer jedem Container
zugewiesen wurde. Wir mussten uns ansehen, wie gut, wir haben es in
diesen Übungen, die auf der
Microservice-Architektur basieren, nicht gemacht . Manchmal
müssen Dienste miteinander kommunizieren, also
müssen wir auf jeden Fall wissen, wie sie sich
miteinander vernetzen werden. Wie werden wir mit dem
Speicher umgehen oder werden wir den Container
aktualisieren
, wenn das
Container-Image aktualisiert wird? Wie starten wir den Container um mit dieser neuen
Version des Images umzugehen? hatten also das Gefühl, wenn
sich etwas anfühlt, starten wir neu Wir haben gesehen, dass wir einiges davon
mit den
Container-Instances online
erledigen können . Und natürlich können wir das wahrscheinlich schaffen, wenn wir uns
hinsetzen und uns selbst Geld verdienen. Aber warum sagen wir
uns, wann wir Kubernetes
verwenden können , ist das automatisiert? Nun, dies ist
erneut ein Kommentar aus der
Microsoft-Dokumentation. Es ist ein kurzer Überblick darüber, warum unser Kubernetes das ist,
was wir Cluster nennen werden. Sie können auch die Experten von Key
It Cluster sehen , wie sie aussehen. Von hier aus haben wir also
das Steuerflugzeug. Hier würde unsere gesamte
Orchestrierungslogik sitzen. Und dann haben wir Cubelets
oder Key Instances. Und jeder von ihnen
hat den Container. Es wird als Knoten gesehen. Und es hat eine Laufzeit für
den Container den Proxy, um
mit der Steuerungsebene zu kommunizieren. Und dann, so viele Container
es gibt, Kubernetes wird sie
wieder alle orchestrieren
und verwalten. Wenn wir nun
Kubernetes haben,
werden wir natürlich einen Azure Kubernetes
Service oder kurz AKS haben . Dies bietet uns also eine
schnelle Möglichkeit, unsere containerisierten
Apps im Handumdrehen zu entwickeln und bereitzustellen. Wir haben also gesehen, wie schnell und einfach
es mit ACR und ACI war. Nun, es ist noch einfacher und
robuster , wenn wir AKS in die Mischung einbauen. Und es gibt uns
die volle Leistung der Kubernetes-Orchestrierung, unterstützt von Microsoft als Ihrer
Infrastruktur. Es ist ein Pay-as-you-go-Service. Und auch hier
sind Skalierbarkeit
und all diese Dinge in Twine enthalten. Dieser
Service wird vollständig verwaltet, sodass wir uns keine
Gedanken über die zugrunde liegende
Software und Hardware machen müssen. Und es bietet mehr
Orchestrierungs- und Verwaltungsfunktionen als ECI
oder Container Instances. Stellen wir uns das wie
einen Management-Service oder eine
Verwaltungsdiensterweiterung für unseren ACI-Service vor. Auch hier
können all
diese Dienste zusammenkommen, um uns
dabei zu helfen,
eine containerisierte
Anwendung bereitzustellen , die durch eine angemessene Orchestrierung
und Skalierbarkeit
unterstützt wird . Jetzt, wo wir
Kubernetes schätzen , ist das zumindest aus
theoretischer Sicht. Lassen Sie uns zu
Null zurückkehren
und unsere Ressourcen aufräumen
und uns ansehen, wie wir Speicherplatz freisetzen und unsere Ressourcen aufräumen und
etwas Geld sparen können .
12. Resource Clean-up: Da wir uns dem
Ende dieses Abschnitts nähern, möchten
wir sicherstellen,
dass wir
unsere Ressourcen aufräumen und nicht mehr Geld als nötig
für unser Azure-Abonnement
ausgeben . Auch wenn Sie einige
der Erbsenpflanzen nicht
nachvollziehen konnten , verstehen Sie
zumindest
die Konzepte und wir schauen uns an, wie wir die Ressourcen entfernen
können. Der einfachste Weg, unsere Ressourcen zu
entfernen, , zur Ressource zu gehen natürlich, zur Ressource zu gehen und auf Löschen zu klicken. Wenn Sie nun
andere Ressourcen in
derselben Ressourcengruppe haben , können
Sie die Ressourcengruppe
jederzeit
löschen , wodurch alle Ressourcen entsprechend zerstört werden. Jetzt habe ich einige wichtige
Dinge in dieser Ressourcengruppe, daher bin ich nicht bereit, diesen Weg
einzuschlagen. Stattdessen lösche ich
die Ressourcen einzeln. Um unsere
Container-Registry zu löschen, klicke
ich einfach auf Löschen. Bist du sicher, dass du löschen möchtest? Okay, und dann wird das den Löschvorgang auslösen
. In ähnlicher Weise
gehe ich für
das Microservice-Bindestrichwerkzeug
zur Container-Instance über . Und ich werde weitermachen
und das auch löschen. Ich werde auch noch einmal auf
eine frühere Operation eingehen, bei der
wir die Bilder gelöscht haben. Bilder nehmen Platz ein. Sie können sehen, wenn Sie
den Befehl docker images eingeben, alle Bilder, die Sie auf
Ihrem Computer haben , und ihre
jeweiligen Größen pro Bild. Wenn Sie das Bild also nicht benötigen, können
Sie es einfach entfernen. In Ordnung? Hier sehen Sie also, dass das SQL
Server-Image 1,33 GB groß ist. Und dann einige der Bilder aus den Apps, an denen
wir gearbeitet haben. Alle von ihnen haben zusammen
eine Gesamtwahrscheinlichkeit von
über einem Gigabyte. Um ein Bild zu entfernen, können
Sie einfach
auf diese Bild-ID doppelklicken und sie kopieren. Und dann geben
Sie in dem Befehl Darker RMI ein, kurz für Remove
Image, geben Sie diese ID ein, drücken die Eingabetaste, und dann
wird es entfernt. Du kriegst also vielleicht einmal eine Erde. Mal sehen, wie diese Antwort lautet. Eine Antwort von D11
auf die Möglichkeit, dies zu löschen, muss erzwungen werden, während
es verwendet wird. Wenn Sie es also erzwingen müssen, wir diesen Befehl erneut ein. Docker sind ein verrückter Bindestrich F, und dann wird
das Löschen erzwungen. Ordnung, das ist eine weitere Möglichkeit , einige der
Ressourcen zu bereinigen , die Sie in diesem Abschnitt wahrscheinlich
gemieden
hätten In Ordnung, das ist eine weitere Möglichkeit
, einige der
Ressourcen zu bereinigen, die Sie in diesem Abschnitt wahrscheinlich
gemieden
hätten. Lassen Sie uns also diesen
Abschnitt des Kurses abschließen.
13. Schlussbemerkung: In diesem Abschnitt haben wir also etwas
über Containerisierung
und Dunkler gelernt . Und wir haben erkannt, dass Docker eine Technologie
ist, die
Technologie anbietet und einen Standard
für die Containerisierung in
der gesamten IT-Branche
gesetzt hat . Während wir uns mit
Containerisierung und Dunkler beschäftigten, haben wir uns angeschaut, wie wir ein.NET Core-Projekt
containerisieren können. Wir haben uns
die Verwendung der Docker-Datei angesehen. Wir haben uns mit der Bereitstellung
zusätzlicher unterstützender Ressourcen
und sogar einiger
mündlicher Überlieferungen zur
Verwendung von Docker Compose befasst und sogar einiger
mündlicher Überlieferungen zur
Verwendung von . Wir haben uns auch angesehen,
wie wir
unsere Apps in Azure
Container Instances bereitstellen können unsere Apps in Azure
Container Instances und wie wir unser Image,
unsere Container-Images
, in eine Registrierung hochladen können . In diesem Fall haben wir uns auf
Azure Container Registry konzentriert. Aber wenn Sie
Docker Desktop verwenden, ist
es sehr einfach,
den Docker Hub zu pushen , wenn Sie ihn als Ihre Registrierung
verwenden möchten. Wir haben auch einen kurzen Überblick über Kubernetes und
Container Orchestration gegeben und was das alles bedeutet. Also danke, dass du diesen Abschnitt mit mir
durchgehalten hast. Wir sehen uns im nächsten Modul.