Dockerized Applikationen ausführen

Dockerized Applikationen ausführen

Docker Container können in Produktion für kleinere Projekte auch via container run und docker-compose up gestartet werden. Es kann auch definiert werden ob der Container im Falle eines Ausfalles neu starten soll uvw.

Docker Cluster

Docker wurde designt um auf verteilten Servern zu laufen, um mehrere Instanzen einer Anwendungen zu erzeugen und somit hochperformante Anwendungen zu erzeugen. Leider funktioniert Docker Compose nicht auf verteilten Servern. 

Orchestrator

Die Orchestrierung ist das flexible Kombinieren mehrerer Services zu einer Komposition. Diese Komposition beschreibt einen ausführbaren Geschäftsprozess. Mehr dazu auf Wikipedia.

Docker stellt Docker Swarm als built-in Container Orchestrierungs-Lösung an. Eine zweite bekannte Lösung wurde von Google ins leben gerufen und nennt sich Kubernetes. Kubernetes is Open Source seit 2014 und Marktführer.

Swarm Cluster

Swarm kommt von Docker und ist bereits voll integriert. Ein Computer in einem Swarm Cluster wird Note genannt. Eine Node kann als Manager oder Worker auftreten - also Container verwalten oder einen Container ausführen. Standardmäßig ist eine Node immer beides. 

Mit swarm init können wir einen Docker Swarm erstellen:

docker swarm init

als Output erhalten wir eine Info wie wir weitere Maschinen zu diesem Cluster hinzufügen können. 

Note: swarm init definiert zugleich auch die Node mit der Manager Rolle.

 

Swarm Commands:

docker swarm..

init | Docker Swarm erstellen += Manager Node

join-token | damit können wir uns die notwendigen Token zum beitreten als Manager bzw. Worker anzeigen lassen.

docker swarm join-token manager
docker swarm join-token worker

join | dem Swarm als worker oder manger beitreten - die Ausgabe von join-token ist dafür notwendig!

update | Swarm Parameter aktualisieren

leave | den Swarm verlassen

 

Note: Wir können Docker Compose nicht für Docker Swarm verwenden. Wir können aber Docker Stack verwenden was wiederum mit dem Docker Compose File einher geht. Dennoch gibt es unterschiede zwischen den Beiden - jeweils werten einige Dinge ignoriert. Details dazu gibt es auf der Docker Webseite.

 

Stack

docker stack..

deploy | mit docker stack deploy - starten wir den Stack - Docker erstellt uns das Netzwerk und vergibt Bezeichner für unsere Services. Mit deploy können wir eine Update durchführen

ls | alles Stacks im Swarm anzeigen

services | zeigt uns alle definierten Services eg. docker stack services used_deploy_name | Note: Services funktioniert nur mit Swarm!

ps | alle Tasks also Instanzen eines Services anzeigen

rm | einen Stack entfernen

 

Service skalieren

scale | Wir können einen Service skalieren indem wir folgendes Command mit eine Anzahl der gewünschten Kopien ausführen:

docker service scale service_name=2

 

Service Managen:

docker service..

create | ist ähnlich container run - hat aber mehr Möglichkeiten da es innerhalb eines Swarm Cluster ausgeführt wird

update | einen Service updaten (check --help - es gibt viele weiter Möglichkeiten)

ls | die Services eines Swarm Cluster anzeigen

ps | Tasks eines oder mehrere Services anzeigen

scale | Service skalieren

logs | logs eines oder mehrere Container anzeigen

inspect | detaillierte Informationen eines Services anzeigen

rollback | zum vorherigen Zustand(State) zurückkehren

rm | einen Service entfernen

 

Swarm Informationen Visuell anzeigen:

docker service create
-p 8080:8080
--constraint=node.role==manager
--mount=type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock
dockersamples/visualizer

 

Node Managen

docker node..

ls | alle Swarm Knoten anzeigen

ps | laufende Tasks eines Knoten anzeigen e.g. docker node ps node_name

inspect | details über den Knoten anzeigen

promote | einen Knoten zum Manager machen

demote | einen Knoten zum Worker machen

update | einen Knoten updaten

rm | einen Knoten entfernen

 

Deployment Konfiguration via Docker Compose

In diesem Beispiel haben wir 2 Replicas definiert und zusätzlich haben wir einen Visualizer hinzugefügt. Der Visualizer bekommt die Rolle Manager da er dafür Designed wurde.

services:
  python:
    deploy:
      replicas: 2

  visualizer:
    image: dockersamples/visualizer:stable
    ports:
      - "8080:8080"
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock"
    deploy:
      placement:
        constraints: [node.role == manager]

 

Pixelparker Logo
Autor
pixelparker
Weitere Artikel die Sie interessieren könnten
DigitalOcean
DigitalOcean
Häufige Probleme mit DigitalOcean.
Docker Beispiel Silverstripe CMS
Docker Beispiel Silverstripe CMS
Die lokale Entwicklung von Silverstripe kann über die Container Plattform Docker unproblematisch und einfach erstellt werden. Neben dem CLI Setup erstellen wir uns auch eine vereinfachte Compose Version.
Docker Compose
Docker Compose
Wir listen die Docker Compose grundlegenden Bezeichner und erstellen ein Multi-Container Beispiel mit Wordpress und MariaDB.
Docker Networks
Docker Networks
Docker Datenvolumen
Docker Datenvolumen
Docker Applikation ausliefern
Docker Applikation ausliefern
Dockerized Applikationen ausführen
Dockerized Applikationen ausführen
OpenFaaS Cloud Bootstrap
OpenFaaS Cloud Bootstrap
OpenFaaS Cloud macht CI / CD besonders einfach und versteckt die Komplexität dahinter.
Openfaas Digitalocean Droplet
Openfaas Digitalocean Droplet
Das OpenFaaS Droplet auf DigitalOcean zum schnellen Setup und Startup!