ict-architecture

Labo 01: Docker Swarm Mode Basics

Basiscommando's voor het opzetten van een Docker Swarm cluster, deployen van services en stacks.

Cluster Opzetten

docker swarm init --advertise-addr <IP-ADRES-MANAGER>
Initialiseer een nieuwe Swarm op de manager node.
docker swarm join-token worker
Toon het commando en token om workers toe te voegen.
docker swarm join --token <TOKEN> <IP-ADRES-MANAGER>:2377
Voeg een node toe als worker aan de Swarm.
docker node ls
Toon alle nodes in de Swarm (enkel via manager).

Service Beheer

docker service create --name echo-service --replicas 2 -p 8080:5678 hashicorp/http-echo -text="hello world"
Maak een nieuwe service met 2 replica's.
docker service ps echo-service
Bekijk op welke nodes de replica's draaien.
docker service logs echo-service
Bekijk de geaggregeerde logs van de service.
docker service update --args "-text=\"updated world\"" echo-service
Voer een rolling update uit op de service.

Node Beheer (Draining)

docker node update --availability drain <NODE_ID_OF_HOSTNAME>
Zet een node op 'drain' (verplaatst containers naar andere nodes).

Stack Deployments

docker stack deploy -c stack.yaml labo1-stack
Deploy of update een stack via een Compose file.
docker stack ls
Toon alle actieve stacks.
docker stack ps labo1-stack
Toon de status van alle services in een stack.
docker stack rm labo1-stack
Verwijder een stack en alle bijhorende services.

Bestanden & Configuraties

stack.yaml
yaml
version: '3.8'
services:
web:
image: flask-redis-app:latest
ports:
- "5000:5000"
deploy:
replicas: 2
placement:
constraints:
- node.role == worker
update_config:
parallelism: 1
delay: 30s
depends_on:
- redis
redis:
image: redis:alpine
deploy:
placement:
constraints:
- node.role == worker
Docker Swarm Stack file voor Flask + Redis app met constraints en update config.