Zum Hauptinhalt springen

Docker Voting App

Um den Swarm Mode zu demonstrieren, werden wir in dieser Übung alle Ubuntu VMs zu einem docker swarm verbinden und das offizielle Docker Beispiel "Example Voting App" darauf deployen.

Auftrag

  1. Startet alle die VM "Modul 169" auf der Workstation.
  2. Öffnet ein Terminal.
  3. Klont mit folgendem Befehl das Repository von Docker.
git clone https://github.com/dockersamples/example-voting-app.git
  1. Navigiert in das repository
cd example-voting-app
  1. Das docker-compose.yml editieren
code docker-compose.yml

Auf der ersten Linie version: "3.8" einfügen.

  1. Visualisieren
docker run --rm -it --name dcv -v $(pwd):/input pmsipilot/docker-compose-viz render -m image docker-compose.yml
  1. die Datei docker-compose.png öffnen und staunen 🤯

  2. Öffnet den Browser und wählt euch in euer Google Mail mit eurem BBZBL Account ein.

  3. Wartet auf die Lehrperson!

Befehl vom Manager Node

  1. Die Lehrperson erstellt nun einen docker swarm Manager mit dem Befehl
docker swarm init

Es wird ein Swarm initialisiert. Im Output sollte ein Befehl wie folgender ausgegeben werden (mit token, ip und port!). Dieser für die Übung an die Klasse per Mail versenden, damit alle dem Swarm beitreten können.

docker swarm join --token <token> <ip>:<port>
vorsicht
  • Natürlich sollte dies produktiv nicht per Mail verbreitet werden 😅
  1. Alle geben den versendeten docker swarm join Befehl ein

  2. Alle Nodes auflisten

docker node ls
  1. Die Kommunikation zwischen den Nodes verschlüsseln
docker swarm ca --rotate
  1. Die App deployen
docker stack deploy --compose-file docker-stack.yml vote
  1. Die Services auflisten
docker service ls
  1. Den Swarm Visualisieren, nach jeder status Änderung die Visualisierung anschauen. Den Visualizer im Browser öffnen.
docker run -it -d -p 8088:8080 -v /var/run/docker.sock:/var/run/docker.sock dockersamples/visualizer
  1. Den Service skalieren (Mehr Containers pro Service)
docker service scale vote=30
  1. Der Manager macht ein anderen Node zum Manager

docker swarm join-token manager

Der Output ist wieder ein docker join ... Befehl. Diesen mehreren Lernenden versenden. Diese müssen den Befehl ausführen damit Sie als Manager Node fungieren.

Wieder auf allen Maschinen

  1. Die Voting App öffnen und die Result App im Browser öffnen.

  2. Eine Vote abgeben.

  3. Jeder soll schauen wie viele Prozesse auf seiner Maschine laufen.

docker ps
  1. Die hälfte soll nun den Swarm verlassen, die services sollten sich nun neu verteilen
docker swarm leave
  1. Jeder soll schauen wie viele Prozesse auf seiner Maschine laufen.
docker ps
  1. Der letzte Manager verlässt den Swarm und beendet ihn damit
docker swarm leave --force
info
  • --force ist nötig, weil der Master natürlich wichtig ist.