1. Einführung in Docker Docker wurde in der Programmiersprache Go entwickelt und basiert auf einigen Funktionen des Linux-Betriebssystems. Es bietet Abstraktion auf Betriebssystemebene und ist eine Containerverwaltungstechnologie, die die Abhängigkeit der Anwendung von der Infrastruktur (Betriebssystem usw.) isoliert. Im Vergleich zu virtuellen Maschinen teilt Docker die Hardwareressourcen des Hostcomputers und verwendet Container, um eine unabhängige Betriebsumgebung zum Ausführen von Anwendungen bereitzustellen. Die virtuelle Maschine basiert auf dem Supervisor (Hypervisor der virtuellen Maschine), der Virtualisierungstechnologie verwendet, um isolierte virtuelle Maschinen bereitzustellen und eine Ausführungsumgebung auf dem Betriebssystem der virtuellen Maschine bereitzustellen! Obwohl beide eine hervorragende Ressourcenisolierung bieten, ist klar, dass Docker den geringeren Virtualisierungs-Overhead aufweist! Docker umfasst drei Kernkonzepte: Register, Image und Container. 1. Registrierung: Lager. Wird zum Speichern von Docker-Images verwendet. Beispielsweise ist Dockers offizieller Docker Hub ein öffentliches Lager, in dem wir die benötigten Images herunterladen können. 2. Bild: Bild. Entwickler erstellen eine Anwendung oder einen Dienst und packen diese und ihre Abhängigkeiten in ein Container-Image. Ein Image ist eine statische Darstellung der Konfiguration einer Anwendung und ihrer Abhängigkeiten. 3. Behälter: Behälter. Ein Container ist eine laufende Instanz eines Images. Es handelt sich um eine isolierte, ressourcengesteuerte, portable Laufzeitumgebung, die ein Betriebssystem, auszuführende Programme, Abhängigkeiten laufender Programme, Umgebungsvariablen usw. enthält. Die Interaktion zwischen den dreien ist: Wenn wir den Befehl „Docker pull“ oder „Docker run“ ausführen und das erforderliche Image lokal nicht verfügbar ist, wird ein Image aus dem Repository (normalerweise DockerHub) heruntergeladen (pull). Docker führt die Run-Methode aus, um einen Container abzurufen, und der Benutzer führt verschiedene Vorgänge im Container aus. Docker führt die Commit-Methode aus, um einen Container in ein Image zu konvertieren. Docker verwendet Befehle wie „Login“ und „Push“, um lokale Images in das Warehouse zu übertragen. Das Image kann auf anderen Maschinen oder Servern verwendet werden, um Container zu generieren und entsprechende Anwendungen auszuführen. 2. Docker-Installation 1. Verwenden Sie zur Installation die Yum-Quelle. Da der Zugriff auf die offizielle Quelle in China langsam ist, fügen Sie hier die Alibaba-Quelle hinzu > wget -P /etc/yum.repos.d/ http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo > yum install -y docker-ce 2. Docker starten //Docker CE starten > systemctl Docker starten > systemctl Docker aktivieren //Docker-Status prüfen> systemctl status docker // Überprüfen Sie die Docker-Version> Docker -v 3. Testen Sie, ob Docker korrekt installiert ist und führen Sie den Befehl aus: a. Wenn Sie b. c. Ein Container ist eine vereinfachte Version des Linux-Betriebssystems. Ein Image ist die in diesen Container geladene Software. Wenn Sie diesen Befehl ausführen, führt Engine Folgendes aus: 1. Überprüfen Sie, ob das Hello-World-Software-Image vorhanden ist 2. Laden Sie das Image von Docker Hub herunter (mehr zu Docker Hub erfahren Sie später) 3. Laden Sie dieses Image in den Container und führen Sie es aus 3. Ausführen des .Netcore-Projekts in Docker 1. Laden Sie das Microsoft/dotnet-Image herunter und warten Sie einige Minuten, bis die Installation abgeschlossen ist. Führen Sie 2. Führen Sie das Microsoft/Dotnet-Image aus. Verwenden Sie > docker run -it microsoft/dotnet //Starten Sie ein Dotnet-Image> dotnet new mvc -n mvctest //Erstellen Sie ein .NET Core MVC-Projekt mit dem Namen mvctest> cd mvctest //Geben Sie den Ordner mvctest ein> dotnet run //Starten Sie das .NET Core MVC-Projekt Die Laufergebnisse sind in der folgenden Abbildung dargestellt: Drücken Sie Strg+C auf der Tastatur, um die Anwendung zu schließen, und geben Sie exit ein, um den aktuellen Container zu verlassen Mit den oben genannten einfachen Schritten ist die Erstellung und Ausführung eines .NET Core MVC-Projekts abgeschlossen. An dieser Stelle sind Sie vielleicht neugierig. Das .NET Core SDK ist nicht auf dem Linux-Host installiert. Wie wird das MVC-Projekt erstellt? Hier kommt die Magie von Docker zum Tragen. Das Dotnet-Image, das wir aus dem Image-Repository gezogen haben, enthält alle Abhängigkeiten und die Laufzeitumgebung, die zum Erstellen, Erstellen und Ausführen von .NET Core-Projekten erforderlich sind. Nachdem wir den Container verlassen haben, führen wir „find -name mvctest“ aus (um nach der MVCTest-Datei zu suchen) und stellen fest, dass sie nicht gefunden wird. Dies bedeutet, dass das gerade erstellte .NET Core MVC-Projekt innerhalb des Containers erstellt wird und vollständig vom Hostcomputer isoliert ist. An diesem Punkt denken Sie vielleicht, dass es zu umständlich ist, den Quellcode jedes Mal im Container zu installieren. Können wir den Container das Quellcodeprojekt unseres Hostcomputers ausführen lassen? Nun, das ist eine gute Frage. Natürlich ist das möglich. Lassen Sie uns diese Frage unten beantworten. 4. Erstellen Sie ein .NET Core-Projekt auf dem Host Um ein .NET Core-Projekt auf dem Host zu erstellen, müssen wir das .NET Core SDK auf dem Linux-Host installieren. 1. Installieren Sie das .NET Core SDK auf dem Host Fügen Sie die Yum-Quelle hinzu: Starten Sie die Installation: Überprüfen Sie die installierte Version. Die folgende Abbildung zeigt, dass die Installation korrekt ist. 2. Erstellen Sie ein .NET Core-Projekt > mkdir-Daten > CD-Daten > dotnet new mvc -n mvctest //Erstellen Sie ein .NET Core MVC-Projekt mit dem Namen mvctest> cd mvctest //Geben Sie den Ordner mvctest ein> dotnet run //Starten Sie das .NET Core MVC-Projekt Hinweis: Fügen Sie den Code .UseUrls("http://*:5000") zur Datei Program.cs hinzu und greifen Sie im Browser wie unten gezeigt darauf zu: Der nächste Schritt besteht darin, das Quellcodeprojekt in diesem Verzeichnis durch Mounten im Container freizugeben. 3. Mounten Sie das Hostprojekt in den Container
// Das „\“ im Befehl bildet in Kombination mit der „Eingabe“-Taste einen Zeilenumbruch, sodass wir einen langen Befehl in einer neuen Zeile eingeben können. > docker run -it \ > -v /data/mvctest/:/app \ > microsoft/dotnet:latest Der obige Befehl mountet die Dateien im Ordner /data/mvctest/ in das Verzeichnis \app des Containers. Aus den obigen Ausführungsergebnissen können wir ersehen, dass das App-Verzeichnis im Container das Quellcodeprojekt auf dem Hostcomputer enthält. Wie oben erwähnt, handelt es sich um eine gemeinsam genutzte Form, anstatt dass der Container eine Kopie des Hostverzeichnisses besitzt. Dies bedeutet, dass Änderungen am Verzeichnis auf dem Host sofort im Container widergespiegelt werden. Andererseits werden Änderungen am freigegebenen Verzeichnis im Container nicht auf dem Hostcomputer widergespiegelt, da andernfalls die Isolationseigenschaften des Containers verletzt werden. Sind Sie anhand eines so einfachen Szenarios schlau genug, um darüber nachzudenken, wie dieses Szenario in unserem täglichen Codierungsprozess angewendet werden kann? Ja, wir können es für Continuous Build (CI) verwenden. Die Grundidee besteht darin, den Quellcode über Git auf den Hostcomputer zu klonen und dann das Quellcodeverzeichnis zur Erstellung in den Container einzubinden. 4. Mit Hilfe von Dockerfile Im nächsten Artikel werden wir diesen Vorgang ohne die Abhängigkeit von Dockerfile aktualisieren und mit einem Befehl abschließen. Dockerfile wird verwendet, um die Reihe von Vorgängen zu definieren, die Sie im Container ausführen werden. Erstellen wir unser erstes Dockerfile > cd /data/mvctest/ //Stellen Sie sicher, dass Sie das von uns erstellte MVC-Projektverzeichnis aufrufen> touch Dockerfile //Verwenden Sie den Befehl touch, um ein Dockerfile zu erstellen > vi Dockerfile //Verwenden Sie den Befehl vi, um Dockerfile zu bearbeiten Nachdem Sie die VI-Bearbeitungsoberfläche aufgerufen haben, kopieren Sie den folgenden Code und fügen Sie ihn mit dem Befehl Umschalt + Einfg ein. Drücken Sie dann ESE, um den Bearbeitungsmodus zu verlassen, drücken Sie Umschalt + : und geben Sie wq ein, um zu speichern und die Bearbeitungsoberfläche zu verlassen. VON microsoft/dotnet:latest ARBEITSVERZEICHNIS /app KOPIEREN ./app Führen Sie „dotnet restore“ aus. EXPOSE 5000 ENV ASPNETCORE_URLS http://*:5000 EINSTIEGSPUNKT ["dotnet","ausführen"] Ich werde die obigen Befehle einzeln erklären: Verwenden Sie FROM, um das vom Container verwendete Image anzugeben Verwenden Sie WORKDIR, um das Arbeitsverzeichnis anzugeben Verwenden Sie den Befehl COPY, um das aktuelle Verzeichnis (wobei . das aktuelle Verzeichnis darstellt) in das Verzeichnis /app im Container zu kopieren. Verwenden Sie den Befehl RUN, um den Befehl anzugeben, der im Container ausgeführt werden soll Verwenden Sie EXPOSE, um die vom Container freigegebene Portnummer anzugeben Verwenden Sie ENV, um Umgebungsparameter anzugeben, die verwendet werden, um dem .NETCore-Projekt mitzuteilen, dass es auf allen Netzwerkschnittstellen auf Port 5000 lauschen soll. Verwenden Sie ENTRYPOINT, um den Einstiegspunkt des Containers anzugeben Nachdem die Docker-Datei nun fertig ist, können wir unser aktuelles Projekt zur Verteilung und Bereitstellung in ein Image packen. Verwenden Sie den Befehl docker build -t <name> <path>, um das Image zu verpacken: Der obige Befehl weist Docker an, das aktuelle Verzeichnis in einen Spiegel zu packen und es
Die obige Anweisung führt unser neu gepacktes Image aus und ordnet den Port 5000 des Containers über den Parameter -p dem Port 80 des Hosts zu. Der Parameter -d weist Docker an, das Image als Hintergrundaufgabe auszuführen. Da Port 80 der Standard-Web-Port ist, können wir auf die in unserem Container ausgeführte MVC-Website zugreifen, indem wir über den Browser direkt auf die IP zugreifen. Bisher haben wir die Containerbereitstellung des .NET Core-Projekts mithilfe von Docker perfekt abgeschlossen. Später werden wir das Image auf anderen Maschinen bereitstellen. 5. Übertragen Sie das Bild ins Lager
1. Führen Sie nach der Registrierung den Befehl aus
Die obigen Informationen zeigen an, dass der Push erfolgreich war. Überprüfen Sie Ihr eigenes Lager, wie unten gezeigt: Abschließend wechseln wir eine Maschine und führen folgenden Befehl direkt aus um das Mehrfach-Deployment abzuschließen. Das obige Image-Repository ist fertig. Ist das nicht sehr praktisch? In Kombination mit dem Geschäft werden Sie feststellen, dass mehr Images benötigt werden. Müssen Sie die Container für die verteilte Bereitstellung von Containern einzeln starten? Nein, wir können Images und Container auch mit einem Klick über Konfigurationsdateien bereitstellen, worüber wir im nächsten Artikel sprechen werden. 6. Allgemeine Docker-Befehle 1. Containerbezogene Vorgänge > docker ps //Den aktuell laufenden Container anzeigen> docker ps -a //Den Status aller Container anzeigen> docker start/stop id/name //Einen Container starten/stoppen> docker attachment id //Einen Container eingeben (der Container wird auch nach dem Beenden mit exit gestoppt) > docker rm id/name //Container löschen. Wenn er läuft, stopp ihn zuerst> docker rm $(docker ps -a -q) //Einen gestoppten Container löschen> docker logs -f hello-world //Logdatensätze des angegebenen Containers anzeigen -i: ermöglicht uns die Interaktion mit dem Container (STDIN) -t: gibt ein Pseudoterminal oder Terminal im neuen Container an --name: Geben Sie dem Container einen Namen, der weggelassen werden kann. Wenn er weggelassen wird, generiert Docker einen zufälligen Namen. 2. Bildbezogene Vorgänge > Docker-Images // Lokale Images anzeigen > Docker-RMI-ID/Name // Ein Image löschen. Wenn kein Tag angegeben ist, wird standardmäßig das neueste Tag gelöscht. > Docker-RMI $(Docker-Images -q) // Alle Images löschen, Vorsicht > Docker-RMI $(Docker-Images -f "dangling=true" -q) // Alle unbenannten Images löschen (können Zwischenimages sein, die während des Build-Prozesses generiert wurden) > Docker Start/Stopp-ID/Name // Einen Container starten/stoppen> Docker Anhänge-ID // Einen Container eingeben (der Container wird auch nach dem Beenden mit „exit“ gestoppt) Spiegeln nach ID-Tag. Das Folgende ist ein Tag eines lokalen Images mit der ID 0e5574283393 zum „Fedora“-Repository mit dem Tag-Namen version1.0 Spiegeln nach Namens-Tag, verwenden Sie den Namen-Tag „httpd“, um lokal auf das Repository „Fedora“ zu spiegeln, und sein Tag-Name ist Version 1.0 Beachten Sie, dass der Tag-Name des referenzierten httpd nicht angegeben ist. Die Standardreferenz ist daher httpd:latest. Kennzeichnen Sie ein Bild mit Namen und Tag-Name. Kennzeichnen Sie ein lokales Bild mit dem Namen httpd und dem Tag-Namen test. Sein Repository ist Fedora und der Tag-Name lautet version1.0.test. Kennzeichnen Sie ein Image in einem privaten Repository. Pushen Sie ein Image in ein privates Register statt in das öffentliche Docker-Register. Sie müssen einen Registrierungshostnamen und -port angeben, um das Image zu kennzeichnen. 3. Deinstallieren Sie Docker CE a. Deinstallieren Sie das Docker-Paket b. Bilder, Container, Volumes oder benutzerdefinierte Konfigurationsdateien auf dem Host werden nicht automatisch gelöscht. Befehle zum Löschen aller Bilder, Container und Datenträger 6. Zusätzliche Wissenspopularisierung 1. Offizielle Adresse der Docker-Image-Bibliothek https://hub.docker.com/r/microsoft/dotnet/ 2. Unterschiede zwischen Microsoft/Dotnet-Image-Versionen a. microsoft/dotnet:<version>-sdk (microsoft/dotnet:2.1-sdk) Dieses Image enthält das .NET Core SDK mit .NET Core und den Befehlszeilentools (CLI). Dieses Bild wird dem Entwicklungsszenario zugeordnet. Sie können dieses Image für die lokale Entwicklung, zum Debuggen und für Komponententests verwenden. Dieses Bild kann auch zum Erstellen von Szenarien verwendet werden. Die Verwendung von microsoft/dotnet:sdk stellt immer die neueste Version bereit. b. microsoft/dotnet:<version>-runtime (microsoft/dotnet:2.1-runtime) Dieses Image enthält .NET Core (Laufzeit und Bibliotheken) und ist für die Ausführung von .NET Core-Apps in Produktionsumgebungen optimiert. c. microsoft/dotnet:<version>-runtime-deps Das Runtime-Deps-Image enthält das Betriebssystem mit allen nativen Abhängigkeiten, die von .NET Core benötigt werden. Dieses Image ist für eigenständige Anwendungen vorgesehen. 3. Bildbeschleunigung Aufgrund von Problemen mit dem inländischen Netzwerk ist das nachfolgende Abrufen von Docker-Images sehr langsam. Wir können einen Beschleuniger konfigurieren, um dieses Problem zu lösen. Ich verwende die NetEase-Mirror-Adresse: http://hub-mirror.c.163.com. Neue Versionen von Docker verwenden Bitte ergänzen Sie dies in der Konfigurationsdatei (falls keine solche Datei vorhanden ist, erstellen Sie bitte zunächst eine): { "Registrierungsspiegel": ["http://hub-mirror.c.163.com"] } #Aktualisieren Sie die Konfigurationsdatei und starten Sie Docker neu systemctl daemon-reload systemctl Neustart Docker **********Wenn Sie Aliyun verwenden, müssen Sie sich bei Ihrem Alibaba Cloud-Konto anmelden, um Ihre eigene Spiegeladresse zu erhalten************ Zusammenfassen Oben ist die vom Herausgeber vorgestellte .NETCore Docker-Containerisierung und private Bildrepository-Verwaltung. Ich hoffe, es wird allen helfen. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und der Herausgeber wird Ihnen rechtzeitig antworten. Ich möchte auch allen für ihre Unterstützung der Website 123WORDPRESS.COM danken! Das könnte Sie auch interessieren:
|
<<: MySQL 5.7.21 Installations- und Konfigurations-Tutorial unter Windows 10
>>: Erste Schritte mit benutzerdefinierten Anweisungen in Vue 3.0
Finden Sie das Problem Schauen wir uns zunächst d...
In diesem Artikel wird hauptsächlich die Methode ...
In diesem Artikel wird die spezifische Methode zu...
Inhaltsverzeichnis 1. Einführung in MHA 1. Was is...
(1) Experimentelle Umgebung youxi1 192.168.5.101 ...
Erfahren Sie, wie Sie Ihre eigene Website auf Apa...
Inhaltsverzeichnis Ergebnisse auf einen Blick Her...
Das Grundprinzip aller Animationen besteht darin,...
Bei der Replikation werden die DDL- und DML-Opera...
Kurzbeschreibung <br />In IE6 und 7 wird in...
Der <base>-Tag gibt die Standardadresse ode...
Globales Objekt Alle Module können aufgerufen wer...
Inhaltsverzeichnis Vorwort 1. Laden Sie MySQL 8.0...
1. Funktionseinführung sed (Stream EDitor) ist ei...
Inhaltsverzeichnis Verwendung von CURRENT_TIMESTA...