Schritte zur Bereitstellungsmethode für Docker Stack für Webcluster

Schritte zur Bereitstellungsmethode für Docker Stack für Webcluster

Docker wird immer ausgereifter und seine Funktionen werden immer leistungsfähiger. Es ist auch sehr praktisch, Docker Stack zum Erstellen eines Serviceclusters zu verwenden. Docker selbst bietet eine Ladefunktion, die sehr praktisch ist. Ich möchte sie mit Ihnen teilen und ein einfaches Tutorial erstellen.

Umfeld

Ich habe für dieses Tutorial zwei virtuelle Centos7-Maschinen verwendet. Ihre IP-Adressen sind

Hauptserver: 192.168.0.105 // auch ein privater Lagerserver Server 2: 192.168.0.49

Der gesamte Code in diesem Beitrag ist auf GitHub zu finden: https://github.com/lpxxn/godockerswarm

Einrichten von Docker Swarm

Ich verwende 192.168.0.105 als Hauptserver und starte Swarm darauf

Docker-Schwarm-Init

Nach der Ausführung des Befehls wird der Befehl zum Beitritt zum Schwarm gegeben

Führen Sie den Befehl auf 192.168.0.49 aus, um dem Schwarm beizutreten

Docker-Schwarm beitreten --Token SWMTKN-1-425vswwmb8o34uhnmo58w0k4rfzs5okjtye7mokpqps1vl9ymq-0p6pr2gua7l8a6udb67tfndoo 192.168.0.105:2377 

Auf diese Weise haben wir den Schwarm aufgebaut und die beiden Hosts haben jetzt eine Beziehung.

Webdienste

Der Webdienst ist eine einfache Schnittstelle, die in der Sprache Go geschrieben ist und den Namen des Hosts zurückgibt: So können wir leicht überprüfen, ob eine Auslastung besteht.

Paket Haupt

importieren (
  "fmt"
  "Protokoll"
  "net/http"
  "os"
)

Funktion main() {
  http.HandleFunc("/hi", func(w http.ResponseWriter, r *http.Request) {
    hostName, _ := os.Hostname()
    fmt.Fprintf(w, "Hostname: %s", Hostname)
  })

  log.Fatal(http.ListenAndServe(":8000", nil))
}

Docker-Datei

Schauen Sie sich das Dockerfile an:

Ausführen bedeutet, den Code in den entsprechenden Ordner zu kopieren, den Port freizugeben und das Programm basierend auf dem Golang-Kontext auszuführen. Einfach, oder?

VON golang

# Den aktuellen Verzeichnisinhalt in den Container kopieren
KOPIEREN ./go/src/github.com/lpxxn/godockerswarm/

ARBEITSVERZEICHNIS /go/src/github.com/lpxxn/godockerswarm/

RUN gehen bauen

EXPOSE 8000

CMD ["./godockerswarm"]

Schauen Sie sich den Ordner an, in dem sich die Dockerfile-Datei befindet

Führen Sie den Docker-Build-Befehl in diesem Verzeichnis aus:

Docker-Build. -t goweb:1.0 

Sie können das neu generierte Image ausführen

docker run -p 8100:8000 7a7e3 

Senden Sie das Bild an ein privates Repository

Ich werde hier mehr darüber sagen, wie man einen privaten Lagerserver aufbaut. Sie können zu meinem vorherigen Beitrag gehen, um es nachzulesen.

Adresse: https://www.jb51.net/article/156168.htm

Da die Maschinen im Cluster automatisch Bilder aus dem Warehouse abrufen und dann das Programm ausführen, müssen wir die oben generierten Bilder in unser privates Warehouse übertragen. Ich habe es selbst gebaut

Mit Tag umbenennen

Docker-Tag goweb:1.0 lpxxn.com:5000/goweb:1.0 

Drücken

Docker Push lpxxn.com:5000/goweb:1.0 

Docker-Compose-Datei

Erstellen Sie als Nächstes die Datei docker-compose.yml

Das Bild ist das Bild, das wir oben erstellt haben. Führen Sie 5 Anwendungen aus. Docker führt die Ladung selbst aus, ordnet den Port 8111 zu, startet den Dienst bei einem Fehler automatisch neu und erstellt ein eigenes Netzwerk. Dies ist sehr nützlich, wenn mehrere Serverdienste vorhanden sind.

Die spezifischen Parameter finden Sie im offiziellen Tutorial:

https://docs.docker.com/compose/compose-file/

Version: "3"
Leistungen:
 Webseite:
  Bild: lpxxn.com:5000/goweb:1.0
  einsetzen:
   Replikate: 5
   Ressourcen:
    Grenzen: 
     CPUs: "0,1"
     Speicher: 50M
   Neustartrichtlinie:
    Bedingung: bei Fehler
  Häfen:
   - „8111:8000“
  Netzwerke: 
   - gowebnet
Netzwerke: 
 gowebnet:

Bereitstellen der Anwendung

Jetzt ist es die letzte Phase. Die Bereitstellung ist genauso einfach. Führen Sie den Bereitstellungsbefehl aus.

Docker-Stack bereitstellen -c docker-compose.yml mygoweb 

Gestartete Dienste anzeigen

Docker-Dienst PS Mygoweb 

Testdienstleistungen

Sehen Sie sich diese zurückgegebenen Hostnamen an: Sie sind unterschiedlich. Docker übernimmt die Last für uns.

Der gesamte Code in diesem Beitrag ist auf GitHub zu finden: https://github.com/lpxxn/godockerswarm

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • Detaillierte Erläuterung des Aufbaus und der Verwendung des Docker Private Warehouse
  • Beispiel für den schnellen Aufbau einer LEMP-Umgebung mit Docker
  • Detaillierte Erläuterung der Protokollverarbeitung von Docker-Containern
  • Seltsame und interessante Docker-Befehle, die Sie vielleicht nicht kennen
  • Docker erstellt MySQL-Erklärung
  • Lösung für den Fehler bei der Installation von Docker auf der CentOS-Version
  • Verwenden von Docker zum Erstellen statischer Website-Anwendungen (mehrere Möglichkeiten)
  • So stellen Sie Microservices mit Spring Boot und Docker bereit
  • So installieren Sie Docker auf Raspberry Pi
  • Docker-Container kommunizieren direkt über Routing, um Netzwerkkommunikation zu erreichen

<<:  So verwenden Sie die Concat-Funktion in MySQL

>>:  Lösen Sie das Problem, dass der MySQL-Verbindungsport belegt ist und Dateipfadfehler verursacht

Artikel empfehlen

So stellen Sie Gitlab schnell mit Docker bereit

1. Laden Sie das Gitlab-Image herunter Docker-Pul...

Beispielcode für HTML-Formularkomponente

HTML-Formulare werden verwendet, um verschiedene ...

Grundlegende Anwendungsbeispiele für Listener in Vue

Inhaltsverzeichnis Vorwort 1. Grundlegende Verwen...

Einführung in die Verwendung des http-equiv-Attributs im Meta-Tag

Meta ist ein Hilfstag im Kopfbereich der HTML-Spra...

js verwendet Cookies, um die Seitenvorgänge des Benutzers zu speichern

Vorwort Während des Entwicklungsprozesses stoßen ...

Implementierung des Markdown-Renderings in einer Vue-Einzelseitenanwendung

Beim Rendern von Markdown habe ich zuvor den Vors...

Acht Implementierungslösungen für domänenübergreifendes JS-Frontend

Inhaltsverzeichnis 1. JSONP domänenübergreifend 2...

Detaillierter Installationsprozess und Prinzip des Vue-Routers

Inhaltsverzeichnis 1. Implementierungsprinzip des...

So installieren Sie JDK8 unter Windows

1. Herunterladen: http://www.oracle.com/technetwo...

Vue implementiert Fuzzy-Abfrage-MySQL-Datenbankdaten

Inhaltsverzeichnis 1. Nachfrage 2. Umsetzung 3. E...

Funktionsweise von SQL-SELECT-Datenbankabfragen

Obwohl wir keine professionellen DBAs sind, könne...