Implementierung der Docker-Batch-Container-Orchestrierung

Implementierung der Docker-Batch-Container-Orchestrierung

Einführung

Der Dockerfile-Build-Ausführungsvorgang ist ein manueller Vorgang eines einzelnen Containers. Wenn eine Microservice-Architektur verwendet wird, müssen über 100 Container gestartet werden. Wie können die Abhängigkeiten zwischen ihnen aufrechterhalten werden?
Docker Compose wird verwendet, um Container einfach und effizient zu verwalten und mehrere Container zu definieren und auszuführen.

Drei Schritte:

  • Docker-Datei
  • Dienste und docker-compose.yml
  • Docker-Compose-Up - Entwicklerhandbuch für Windows

Erste Erfahrung

1.Docker-Datei

VON python:3.7-alpine
ARBEITSVERZEICHNIS /code
ENV FLASK_APP app.py
Umgebung FLASK_RUN_HOST 0.0.0.0
Führen Sie den Befehl apk add --no-cache gcc musl-dev linux-headers aus.
KOPIEREN requirements.txt requirements.txt
Führen Sie den Befehl „pip install -r requirements.txt“ aus.
KOPIEREN . .
CMD ["Flasche", "ausführen"]

2.Dienstleistung

Importzeit
Redis importieren
aus Flasche importieren Flasche
App = Flask(__name__)
Cache = Redis.Redis (Host = "Redis", Port = 6379)
auf Grund von get_hit_count():
  Wiederholungsversuche = 5
  während True:
    versuchen:
      returniere cache.incr('Treffer')
    außer redis.exceptions.ConnectionError als exc:
      wenn Wiederholungen == 0:
        erhöhen exc
      Wiederholungen -= 1
      Zeit.Schlaf(0,5)
@app.route('/')
def hallo():
  Anzahl = Trefferanzahl abrufen()
  return 'Hallo Welt! Ich wurde {} Mal gesehen.\n'.format(Anzahl)

docker-compose.yml

Version: '3'
Leistungen:
Webseite:
 bauen: .
 Häfen:
- "5000:5000"
 Bände:
- .:/Code
 -logvolume01:/var/log
 Links:
- Redis
Redis:
 Bild: Redis
Bände:
logvolume01: {}
Docker-Compose-Up - Entwicklerhandbuch für Windows
Compose-demo_web_1 wird gestartet ... fertig
Compose-demo_redis_1 wird gestartet ... fertig
Anhängen an compose-demo_redis_1, compose-demo_web_1
redis_1 | 1:C 12. September 2020 07:34:09.654 # oO0OoO0OoO0Oo Redis wird gestartet oO0OoO0OoO0Oo
redis_1 | 1:C 12. September 2020 07:34:09.655 # Redis-Version=6.0.7, Bits=64, Commit=00000000, geändert=0, PID=1, gerade gestartet
redis_1 | 1:C 12. Sep. 2020 07:34:09.655 # Warnung: Keine Konfigurationsdatei angegeben, verwende die Standardkonfiguration. Um eine Konfigurationsdatei anzugeben, verwende redis-server /path/to/redis.conf
redis_1 | 1:M 12. September 2020 07:34:09.657 * Ausführungsmodus=Standalone, Port=6379.
redis_1 | 1:M 12. Sep. 2020 07:34:09.657 # WARNUNG: Die TCP-Backlog-Einstellung von 511 kann nicht erzwungen werden, da /proc/sys/net/core/somaxconn auf den niedrigeren Wert von 128 eingestellt ist.
redis_1 | 1:M 12. September 2020 07:34:09.657 # Server initialisiert
redis_1 | 1:M 12. Sep. 2020 07:34:09.658 # WARNUNG overcommit_memory ist auf 0 gesetzt! Das Speichern im Hintergrund kann bei zu wenig Arbeitsspeicher fehlschlagen. Um dieses Problem zu beheben, fügen Sie 'vm.overcommit_memory = 1' zu /etc/sysctl.conf hinzu und starten Sie dann neu oder führen Sie den Befehl 'sysctl vm.overcommit_memory=1' aus, damit dies wirksam wird.
redis_1 | 1:M 12. September 2020 07:34:09.658 * RDB wird geladen, erstellt von Version 6.0.7
redis_1 | 1:M 12. September 2020 07:34:09.658 * RDB-Alter 156 Sekunden
redis_1 | 1:M 12. September 2020 07:34:09.658 * RDB-Speichernutzung bei Erstellung 0,77 Mb
redis_1 | 1:M 12. September 2020 07:34:09.658 * DB von Festplatte geladen: 0,000 Sekunden
web_1 | * Bereitstellung der Flask-App „app.py“
web_1 | * Umgebung: Produktion
web_1 | WARNUNG: Dies ist ein Entwicklungsserver. Verwenden Sie ihn nicht in einer Produktionsbereitstellung.
web_1 | Verwenden Sie stattdessen einen Produktions-WSGI-Server.
web_1 | * Debug-Modus: aus
YML-Datei rulesversion: "1.0" #versionservices: #service listservice1:
    #Dienstkonfiguration container_name: #Containername depends_on: #Abhängigkeitsliste - depend1
    -abhängig2
    Bilder: #Spiegelbild1
    - Bild2
    build:. #Verzeichnis erstellen Netzwerk: #Netzwerk......
  Dienst2:test2
    ......
volumnes: #Verzeichnisliste einbinden networks: #Netzwerkliste configs: #Andere Konfigurationen

Dies ist das Ende dieses Artikels über die Implementierung der Docker-Batchcontainer-Orchestrierung. Weitere relevante Inhalte zur Docker-Batchcontainer-Orchestrierung finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • Implementierung der Docker Compose-Container-Orchestrierung in IDEA
  • Verwenden von Docker-Datenvolumes und Container-Orchestrierung
  • Docker-Container-Orchestrierungstool Compose (Erste Schritte)
  • Docker-Serie: Verwenden von Docker Compose zum Orchestrieren von Containern
  • Erstellen und Verwenden von Docker-Datenvolumencontainern
  • Detaillierte Erklärung der Datenmengen von Docker-Containern
  • So generieren Sie ein Docker-Image und schließen die Containerbereitstellung in einem Spring-Boot-Projekt ab
  • So installieren Sie den Kibana-Tokenizer im Docker-Container
  • Analyse des Implementierungsprozesses der Docker-Container-Orchestrierung

<<:  MySQL: Praktische Erfahrung mit der Verwendung der Insert-Anweisung

>>:  Die Scroll-Ansicht des WeChat-Applets realisiert die Verknüpfung nach links und rechts

Artikel empfehlen

So passen Sie einen EventEmitter in node.js an

Inhaltsverzeichnis Vorwort 1. Was ist 2. So verwe...

40 CSS/JS-Stil und funktionale technische Verarbeitung

1- Dropdown-Auswahlfelder gestalten – Ändern Sie ...

Wissen Sie, wie Sie mit Vue-Cropper Bilder in Vue zuschneiden?

Inhaltsverzeichnis 1. Installation: 2. Verwendung...

Reines CSS zum Hinzufügen von Stil zur ausgewählten Implementierung (kein Skript)

Ändern Sie den Standardstil der Auswahl, normalerw...

Detaillierte Analyse der Rolle von HTML-Kommentar-Tags <!--...-->

Wenn wir den Quellcode vieler Websites überprüfen...

Beispielcode zur Implementierung von Anti-Shake in Vue

Anti-Shake: Verhindert, dass wiederholte Klicks E...

So implementieren Sie ein Glücksradspiel im WeChat-Applet

Ich stelle hauptsächlich vor, wie man im WeChat-A...

Ungültige Lösung beim Definieren mehrerer Klassenattribute in HTML

Beim Schreiben von HTML definieren wir häufig mehr...

Detaillierte Erläuterung der MySQL-Benutzervariablen und Set-Anweisungsbeispiele

Inhaltsverzeichnis 1 Einführung in Benutzervariab...