‫Nun, da wir alles über die Swarm-Skalierung mit überlagertem Netzwerk- und Routing-Netz gelernt haben, möchten wir,
‫dass Sie die Elemente oder Objekte erstellen, die Sie in einem Swarm-Szenario
‫bereitstellen müssen.
‫Wir verwenden also nicht mehr den Docker-Befehl run, aber das Netzwerk und die Volumes
‫sind irgendwie gleich, aber leicht unterschiedlich.
‫Ich möchte Ihnen ein realistisches Szenario einer mehrschichtigen App vorstellen, und wir werden die Distributed Voting App von Docker
‫verwenden.
‫Es heißt eigentlich die Beispiel-Voting-App.
‫Möglicherweise haben Sie es in Docker-Keynotes oder in anderen Labors oder Lernprogrammen gesehen.
‫Es ist eine ziemlich verbreitete und meiner Meinung nach großartige App, da sie mindestens fünf Rollen oder verschiedene Container
‫enthält, die Sie bereitstellen müssen.
‫Und sie alle erfüllen eine spezielle Funktion und machen Dinge, die tatsächlich funktionieren, tatsächlich das tun, was
‫es tun soll.
‫Sie können also damit spielen und es hat sehr typische, verteilte Architekturkomponenten wie das
‫Web-Frontend und das Worker-Backend
‫sowie den Schlüsselwert in einer Datenbank. Ich denke, das ist sehr hilfreich. In diesem Fall verwenden Sie
‫das Verzeichnis swarm-app-1. Es ist eigentlich in unserem Kurs Repo. Darin ist nichts
‫als eine Readme und ein Bild. In dieser Readme-Datei müssen Sie das Volume sowie einige Netzwerke und fünf
‫Dienste erstellen, die für die vollständige Funktionsfähigkeit dieser App erforderlich sind.
‫Es kann hilfreich sein, einige dieser Befehle lokal auszuprobieren oder sie tatsächlich in Ihren Texteditor zu schreiben und sie sozusagen zu komponieren,
‫da sie recht komplex sein werden. Wenn Sie diesen Docker-Dienst
‫erstellen, müssen Sie ihn mit einem bestimmten Netzwerk verbinden, Ports öffnen, einen bestimmten
‫Namen angeben und ein bestimmtes Image verwenden. Daher ist es möglicherweise einfacher, es lokal zu bearbeiten und dann einfach auszuschneiden
‫und in Ihre Shell einzufügen, wo immer sich Ihr Schwarm befindet.
‫Aber das bin nur ich.
‫Alles wird Docker Hub-Images verwenden, da in der Produktion Swarm nicht erstellt werden soll.
‫Dies ist normalerweise kein Prozess, den Sie für Ihren Produktionsschwarm benötigen.
‫Normalerweise möchten Sie Ihr Gebäude entweder über einen automatisierten Onlinedienst wie Docker Hub
‫oder Docker Cloud oder irgendwo in Ihrer CI / CD-Pipeline erstellen, die keine Ressourcen in Ihrem Produktions-Swarm verbraucht.
‫In diesem Szenario können wir uns vorstellen, dass unsere Images an einem anderen Ort erstellt und
‫in Docker Hub gespeichert werden, und wir müssen sie nur, unabhängig von der aktuellen Version, in unseren Swarm ziehen.
‫Und ich sage nur, wie viele Dinge in der Informatik, das ist eine Hälfte der Wissenschaft, eine Hälfte der Kunstform.
‫Ihre Befehle können sich in einer völlig anderen Reihenfolge befinden oder eine völlig andere Optionsreihenfolge haben als meine.
‫Sie können Ihre Netzwerke als verschiedene Dinge bezeichnen.
‫Das ist gut.
‫Das Endergebnis ist, dass die Anwendung funktioniert, dass sie auf die richtige Weise miteinander kommunizieren
‫können, dass Sie alle Ports veröffentlicht haben und dass Sie die Daten in einem Volume geschützt haben.
‫Werfen wir einen kurzen Blick darauf, was Sie erwartet.
‫Stellen Sie sich vor, Sie müssen die Befehle und die Architektur dafür entwerfen.
‫Und das ist, was der Entwickler Ihnen geben würde, der diese App geschrieben hat.
‫In diesem Fall haben wahrscheinlich viele Entwickler diese App geschrieben, oder?
‫Da wir tatsächlich ein Web-Frontend in Python haben, haben wir ein Web-Backend, das in Node
‫ausgeführt wird.
‫Wir haben einen Worker-Prozess, der läuft. NET und dann haben wir einen
‫Redis-Schlüsselwertspeicher und eine PostgreSQL-Datenbank.
‫Das sehe ich eigentlich immer öfter, wenn verschiedene Teams verschiedene Teile einer Lösung schreiben und einfach
‫die Sprache auswählen können, die sie für das jeweilige Szenario für am besten halten.
‫Und in der Welt der Container ist diese Art der Anwendung wirklich hervorragend. Da unsere Anwendungen alle segmentiert sind, können
‫sie technisch auf
‫demselben Computer ausgeführt werden, sind jedoch alle voneinander geschützt, sodass Sie nicht mit Knoten
‫in Konflikt geraten, der mit Abhängigkeiten von Python oder was auch immer steht.
‫Sie werden auch hier den Verkehrsfluss bemerken und die Abstimmungs-App hat ihn nicht, aber es
‫sollte ein kleiner Pfeil eingehen, in dem die Benutzer den Abstimmungs-App-Teil eingeben
‫würden.
‫Und Sie können sehen, dass die Abstimmungs-App tatsächlich Ihre Stimmen für diese Anwendung abgeben muss. Übrigens, Sie werden
‫für Katzen und Hunde abstimmen.
‫Dies wird in Redis übertragen, und dann überprüft der Worker das Redis-System tatsächlich auf
‫alle in der Warteschlange befindlichen Elemente und überträgt die Ergebnisse in Postgres, das dann in einem
‫WebSockets-Backend angezeigt wird, das tatsächlich live aktualisiert wird Wählen.
‫Wenn wir schnell in das Verzeichnis springen, habe ich hier einige Notizen eingefügt, die Ihnen dabei helfen sollen, denn es gibt
‫ein paar Dinge, die ein bisschen anders und neu sind.
‫Der Servicebereich wäre jedoch so geschrieben, als stamme er von jemandem, der seine Anwendung kannte, aber nicht wusste,
‫wie man dies in Docker umsetzt. Und das ist ein ziemlich verbreitetes Szenario.
‫Sie können sehen, dass in den von mir aufgelisteten Diensten das Image aufgeführt ist, das Sie bereitstellen müssen, der
‫tatsächliche Name, den Sie ihm geben müssen, da diese wichtig sind.
‫Dies sind Bilder, die leider fest codiert sind, nach welchen Namen sie im Netzwerk suchen werden.
‫Idealerweise möchten Sie Anwendungen, die Sie im Handumdrehen für die Aufgaben konfigurieren können, die sie für Namen ausführen müssen. In
‫diesem Fall sucht vote jedoch speziell nach einem DNS-Eintrag mit dem Namen redis. Sie können sehen, dass es hier tatsächlich
‫zwei Netzwerke gibt. Wir haben ein Frontend und ein Backend-Netzwerk. Das ist ziemlich typisch
‫für eine größere Anwendung, bei der Sie Ihre Datenbank möglicherweise in einem Back-End-Netzwerk schützen
‫möchten, damit die Front-End-Benutzer-App keinen direkten Zugriff darauf hat.
‫Und genau das zeigen wir hier und Sie werden feststellen, dass der Mitarbeiter tatsächlich mit zwei Netzwerken verbunden ist.
‫Denken Sie also bei der Verwendung des Befehls create daran, dass Sie den Docker-Dienst create not docker run verwenden.
‫Wenn Sie also den Docker-Dienstbefehl create verwenden, müssen Sie das --network zweimal
‫angeben, einmal für das Frontend und einmal für das Backend.
‫Natürlich müssen Sie zuerst Ihre Netzwerke erstellen.
‫Einige davon sind hier oben angegeben. Und wenn Sie das Image erneut benötigen, finden Sie
‫hier auch das Architekturdiagramm. Nur für den Fall, dass dies konzeptionell bei der Bereitstellung hilfreich ist.
‫Und natürlich erhalten Sie die Docker-Dokumentation. Möglicherweise müssen Sie den Befehl --help für
‫den Dienst create verwenden, der Ihnen alle verschiedenen Optionen bietet, die Sie möglicherweise benötigen.
‫Sie brauchen nur drei oder vier davon. Wenn Sie mit den Befehlen selbst nicht
‫weiterkommen, sollten Sie die eigentliche Dokumentation lesen, die ich in die Ressourcen dieses Abschnitts aufnehmen werde.
‫Dieses spezielle Dokument unter Swarm befasst sich jedoch mit dem Erstellen von Diensten und dem Konfigurieren von Diensten.
‫Also, es ist ein bisschen wortreich, aber es enthält viele Informationen, die Ihnen helfen könnten, wenn Sie hier stecken
‫bleiben.
‫Das nächste Video werde ich tatsächlich selbst durchgehen, als ob ich du wäre.
‫Viel Glück und viel Spaß.