Implementieren Sie dynamisches Management und Monitoring von Docker-Containern basierend auf Spring-Boot und Docker-Java [mit vollständigem Quellcode-Download]

Implementieren Sie dynamisches Management und Monitoring von Docker-Containern basierend auf Spring-Boot und Docker-Java [mit vollständigem Quellcode-Download]

Einführung in Docker

Docker ist eine Open-Source-Container-Engine für Anwendungen. Im Vergleich zur herkömmlichen virtuellen Maschinentechnologie weist der Docker-Container einen äußerst geringen Leistungsaufwand auf und ist daher bei Entwicklern sehr beliebt. Da immer mehr Entwickler ihre Arbeit auf Docker basieren, werden Docker-Images immer häufiger. In Zukunft können verschiedene vollständige Lösungen auf Unternehmensebene direkt durch Herunterladen von Images verwendet werden. Daher wird Docker immer wichtiger.

Zweck dieses Artikels

Dieser Artikel stellt anhand eines Projektbeispiels die Verwaltung und Überwachung von Docker-Containern über die externe Docker-Schnittstelle vor.

Anwendungsszenarien:

Der Server-Ressourcenpool wird einheitlich über Docker verwaltet, Ressourcen werden zugewiesen und Container werden bei Bedarf erstellt, um die Ressourcennutzung zu maximieren. Gleichzeitig wird die Isolierung zwischen verschiedenen Betrieben (Containern) gewährleistet. Und es kann die Online-Bereitstellung von Projekten unterstützen.

Dieses Projekt simuliert die oben genannten Szenarien. Der Code ist nicht streng verboten und dient nur zu Lernzwecken.

Dieser Artikel

1. Erstellen Sie über die Schnittstelle einen Docker-Tomcat-Container und konfigurieren Sie das Limit.

2. Laden Sie das War-Paket hoch und stellen Sie es im Container bereit.

3. Überwachen Sie dynamisch die Ressourcennutzung aller Docker-Container.

Der Code basiert auf der Open-Source-Komponente Docker-Java und die funktionale Entwicklung erfolgt auf Basis von Spring-Boot. Die Schnittstelle ist wie folgt:

Grundlegende Umgebung

1. Sonnenfinsternis 2019-03;

2. Docker für Windows. Aus Lern- und Vereinfachungsgründen wird nicht die Linux-Umgebung verwendet, die Prinzipien und grundlegenden Befehle sind jedoch dieselben.

Verwandte Technologien und Wissenspunkte:

Maven, Spring-Boot; Spring MVC; Spring-Upload und -Download, JQuery Ajax und Upload.

Umsetzungsprinzip

Docker bietet eine Vielzahl externer Schnittstellen (wie z. B. Restfull-API), über die Docker verwaltet werden kann. Die Open-Source-Komponente Docker-Java wird basierend auf dieser Schnittstelle gekapselt, was die Entwicklung erleichtert. Natürlich gibt es auch andere vorgefertigte Komponenten auf dem Markt, die Sie selbst vergleichen und kennenlernen können. Ich möchte an dieser Stelle den Open-Source-Autoren meinen Dank aussprechen.

Vorbereitung vor der Umsetzung

1. Windows aktualisieren

Da wir eine Windows-Umgebung verwenden, ist auf meinem eigenen Computer die Win10 Home Edition vorinstalliert und Docker für Windows muss auf einem Betriebssystem höherer Ebene ausgeführt werden, um die Virtualisierungstechnologie nutzen zu können. Daher muss es auf die Professional Edition aktualisiert werden.

Wenn Sie ein Upgrade benötigen, ist der Upgrade-Prozess relativ einfach und wird im Folgenden kurz beschrieben (Sie können diesen Schritt überspringen, wenn Sie bereits die Professional-Version besitzen):

Klicken Sie auf „Produktschlüssel ändern“, geben Sie den Schlüssel der professionellen Version ein und warten Sie dann, bis das Upgrade fortgesetzt wird. Den Schlüssel können Sie selbst im Internet suchen, da ist er sowieso vorhanden.

2. Installieren Sie Docker für Windows

Nach dem Download von der offiziellen Website klicken Sie einfach auf den nächsten Schritt. Nach der Installation wird es automatisch gestartet und das Docker-Logo wird nach dem Start in der Symbolleiste angezeigt.

Nachdem die Installation erfolgreich war, können Sie einige Befehle eingeben, um zu testen, ob sie erfolgreich war. Beispiel: Zeigen Sie die grundlegenden Informationen zu Docker an.

3. Ändern Sie die Adresse des Docker-Image.

Da die Standardspiegeladresse langsam ist, ein Tomcat-Spiegel mehr als 500 m beträgt und der Download bei einem schlechten Netzwerk sehr langsam ist, können Sie die Spiegeladresse wie folgt auf die NetEase-Spiegeladresse konfigurieren:

4. Starten Sie die Fernverwaltung

Überprüfen Sie das letzte Element. Hier handelt es sich bei tcp//xxx um die Remote-Verbindungsadresse.

Geben Sie nach dem Start die Adresse in den Browser ein, um zu sehen, ob Ergebnisse zurückgegeben werden:

http://localhost:2375/info (diese Adresse entspricht der Eingabe von „docker indo“ in cmd) gibt den Inhalt im JSON-Format zurück:

Code-Entwicklung während der Implementierung

1. Erstellen Sie ein Maven-Projekt.

Aufgrund der Einfachheit des Vorgangs wird dieser Vorgang weggelassen. Die Codestruktur des gesamten Projekts ist wie folgt:

2. Konfigurieren Sie die Maven-Abhängigkeiten von Docker-Java und Spring Boot. Der endgültige Inhalt der POM-Datei lautet wie folgt

Beim Betrachten des JAR-Pakets sollte Docker-Java auf der untersten Ebene die Netty-Abhängigkeit verwenden.

3. Fügen Sie die Spring-Konfigurationsdatei application.properties hinzu

Konfigurieren Sie den Speicherort von JSP und die Verwaltungsadresse von Docker.

4. Einführung in die Hauptkategorien:

1. Spring Boot startet die Hauptklasse.

Natürlich können Sie auch andere Container konfigurieren oder das Jetty-Plugin von Maven zum Starten verwenden.

Sie können auf einen anderen Artikel verweisen: Spring-Boot-Prinzip (mit einem Spring-Boot-Starter-Beispiel) mit Quellcode-Download

Achten Sie auf den Speicherort dieser Klasse. Am besten legen Sie sie im Stammverzeichnis ab, damit alle Unterverzeichnisse unter dem Stammverzeichnis von Spring gescannt werden können.

2.DockerClientOperaterServer (Klasse, die mit Docker interagiert), wie folgt:

Folgende Methoden sind enthalten:

initClient: Initialisiert die Verbindung.

getDockerInfo: Grundlegende Informationen zu Docker abrufen;

stat: Echtzeitstatistiken;

refreshContainers: Ruft grundlegende Informationen aller Container ab und legt sie im Cache ab;

createAndStartrContainerAnddeployApp: Erstellt und startet einen Container basierend auf den in der Schnittstelle übergebenen Parametern und stellt gleichzeitig das Projekt bereit.

stopContainer: Stoppen Sie den Container;

rmContainer: einen Container löschen;

closeClient: Verbindung schließen;

pushAppToCotainer: War-Paket auf Tomcat bereitstellen;

Da der Codeausschnitt zu lang ist, hier ein paar Hauptmethoden:

createContainer (Container erstellen):

Diese Methode verwendet Docker-Java, um Container zu erstellen, Kontingente zuzuweisen, die Portzuordnung zu konfigurieren usw.

pushAppToCotainer: Stellen Sie das Projekt auf Tomcat bereit.

stat, Überwachungsmethode:

Die Docker-Java-Methode wird nicht zur Überwachung verwendet. Tatsächlich wird sie unterstützt, aber da die zurückgegebenen Ergebnisse verschiedene Verarbeitungsschritte erfordern, wird eine Abkürzungsmethode verwendet. Verwenden Sie Java, um cmd zur Ausführung aufzurufen (Docker-Statistiken), um Überwachungsergebnisse zu erhalten.

Der Code für Docker-Java zum Abrufen von Überwachungsinformationen lautet wie folgt:

3.DockerClientController (Controller, der mit der Schnittstelle interagiert).

Einführung in die wichtigsten Methoden:

addContainer: Container hinzufügen und War-Paket hochladen

Das Obige ist die Erklärung des Hauptcodes.

Um spezifische Codedetails zu erhalten, laden Sie bitte den Quellcode herunter, starten Sie ihn und folgen Sie den Anweisungen, um ihn anzuzeigen.

Die Hauptschnittstelle nach der Implementierung:

Da es sich um ein Beispielprojekt handelt, verwendet der Code keine Vue- und Bootstrap-Frameworks. Ich habe selbst einige CSS- und JS-Elemente geschrieben. Die konkreten Auswirkungen sind wie folgt:

1. Monitoring- und Management-Homepage

2. Behälter hinzufügen;

Zusammenfassen

Oben habe ich Ihnen die dynamischen Verwaltungs- und Überwachungsfunktionen von Docker-Containern auf Basis von Spring-Boot und Docker-Java vorgestellt [mit vollständigem Quellcode-Download]. Ich hoffe, es wird Ihnen helfen. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und ich werde Ihnen rechtzeitig antworten. Ich möchte auch allen für ihre Unterstützung der Website 123WORDPRESS.COM danken! Wenn Sie diesen Artikel hilfreich finden, können Sie ihn gerne abdrucken und dabei bitte die Quelle angeben. Vielen Dank!

Das könnte Sie auch interessieren:
  • Quellcode der Java-Containerklasse, detaillierte Erklärung von Deque und ArrayDeque
  • Detaillierte Erläuterung des Java-Synchronisationscontainers und des gleichzeitigen Containers
  • Detaillierte Erläuterung der JavaFX-Desktopanwendungsentwicklung - Gruppe (Containergruppe)
  • Erläuterung der Java-basierten Spring Boot-Containerkonfiguration
  • Java-Betriebsprozess vom synchronen Container zum gleichzeitigen Container
  • Detaillierte Erklärung des Quellcodes der Java-Containerklasse.
  • Umfassende Analyse der JAVA-Containersammlung (Sammlung und Karte)

<<:  So erklären Sie TypeScript-Generika auf einfache Weise

>>:  mysql5.7.21 UTF8-Kodierungsproblem und -Lösung in der Mac-Umgebung

Artikel empfehlen

Natives js zur Realisierung der Bild-Upload-Steuerung

In diesem Artikelbeispiel wird der spezifische Co...

Beispiel einer Skriptmethode für die Bindung von Linux-Dualnetzwerkkarten

Bei der Bedienung und Konfiguration von Linux wir...

Beispielanalyse der MySQL-Benutzerrechteverwaltung

Dieser Artikel beschreibt das Beispiel der MySQL-...

W3C Tutorial (11): W3C DOM Aktivitäten

Das Document Object Model (DOM) ist eine Plattfor...

Docker-Container greift auf MySQL-Operationen des Hosts zu

Hintergrund: Es gibt ein Flask-Projekt, das eine ...

Docker-Installation Nginx Tutorial Implementierung Abbildung

Lassen Sie uns Nginx installieren und ausprobiere...

Karusselleffekte mit JavaScript implementieren

In diesem Artikel wird der spezifische Code für J...

So konvertieren Sie Zeilen in Spalten in MySQL

MySQL-Zeilen-zu-Spalten-Operation Die sogenannte ...

Beispielcode für den dynamischen CSS-Ladebalkeneffekt

Mit dem Wissen über CSS-Variablen werde ich den C...

Tutorial zu HTML-Tabellen-Tags (34): Zeilenspannen-Attribut ROWSPAN

In einer komplexen Tabellenstruktur erstrecken si...

JS praktisches objektorientiertes Schlangenspielbeispiel

Inhaltsverzeichnis denken 1. Bild mit dem gierige...

So entfernen Sie die Trennlinie einer Webseitentabelle

<br />So entfernen Sie die Trennlinien einer...

Installations-Tutorial für mysql8.0rpm auf centos7

Laden Sie zunächst das Diagramm herunter 1. Deins...

Grafisches Tutorial zur Installation und Konfiguration von MySQL 8.0.15

In diesem Artikel wird die Installations- und Kon...

Verwenden von js, um den Effekt eines Karussells zu erzielen

Lassen Sie uns heute darüber sprechen, wie Sie mi...