32
Docker Workbench dunkelfrosch.com | twitter.com/dunkelfrosch | github.com/paterik v0.9.5, german image: https://en.wikipedia.org/wiki/MV_Rena#/media/File:NZ_Defence_Force_assistance_to_OP_Rena.jpg 1

Docker Workbench

Embed Size (px)

Citation preview

Page 1: Docker Workbench

Docker Workbench

dunkelfrosch.com | twitter.com/dunkelfrosch | github.com/paterik

v0.9.5, german

image: https://en.wikipedia.org/wiki/MV_Rena#/media/File:NZ_Defence_Force_assistance_to_OP_Rena.jpg

1

Page 2: Docker Workbench

Introduction❖ wer bin ich eigentlich ?

❖ PID: Patrick Paechnatz

❖ Task: Senior Backend Developer

❖ Host: move:elevator, Dresden

❖ UpTime: 38y (~17y Developer)

❖ ENV: C++, C#, Erlang, Python, PHP

dunkelfrosch.com | twitter.com/dunkelfrosch | github.com/paterik

2

Page 3: Docker Workbench

Agenda❖ Über was möchte ich sprechen ?

Dieser Vortrag soll euch docker-compose an einem praktischen Beispiel zeigen, alternative Ansätze erläutern und auch einige Best-Practices auf den Weg geben …

❖ Docker composition: „Compose Why“?⇢ 8 slides

❖ Composition, practical: „Atlassian Workbench“ ⇢ 15 slides

3

Page 4: Docker Workbench

docker in action, … composing and practical issues

DOCKER WORKBENCH

Part 1, Compose … why?

image: https://upload.wikimedia.org/wikipedia/commons/9/94/Maersk_Majestic.jpg

4

Page 5: Docker Workbench

Compose why?❖ Warum docker-compose?

❖ Vorteile von docker-compose …

❖ Nachteile von docker-compose …

❖ Best Practices

❖ Was gibt es Neues?

❖ Alternativen?

❖ Mesos, Kubernetes, Tutum

5

Page 6: Docker Workbench

Compose why?❖ Warum docker-compose?

❖ Composition: Vereinfachung eines komplexen Verbund-Container-Managements (Micro-Services).

❖ Configuration: YAML basierendes, einfaches, übersichtliches Konfigurations-Schema.

❖ Consistence: Einheitliche Verwaltungs-Struktur.

❖ Convenience: Einfache Handhabung der (doch recht umständlichen) nativen Docker Verwaltungs-Prozesse.

6

Page 7: Docker Workbench

Compose why?❖ Vorteile von docker-compose

❖ Verhindert „eigene“ Scripting-Ansätze für wieder- kehrende Container-Verwaltungs-Prozesse.

❖ Services und deren Abhängigkeiten sind unabhängig von der zugrundeliegenden Infrastruktur leicht auflösbar und kombinierbar.

❖ Einfaches Container Networking (lightweight nodes)

❖ Bestandteil der Docker „Trinity“ (d/dc/dm)

7

Page 8: Docker Workbench

Compose why?❖ Nachteile von docker-compose

❖ intern noch als „vorläufiges Tool“ gekennzeichnet

❖ ungenügende observer/monitoring Funktionalität

❖ fehlendes Kommunikations-Pattern (sockets)

❖ fehlendes Container Exec Return Code Handling

❖ problematische Abhängigkeits-Erkennung (< v1.6)

❖ unvollständiger Docker-Funktionsumfang (< v1.6)

8

Page 9: Docker Workbench

Compose why?❖ Best Practices

❖ Verwendung von Server Verzeichnisstrukturen

❖ Weitestgehender Verzicht auf Linking zugunsten des Networking-Features.

❖ Prüfung auf Möglichkeit zur vordefinierten Last-Verteilung über CPU-Share/-Quota/-Sets.

❖ Zeitnahe Anpassung an neuen verfügbare Basis-Versionen von docker-compose/docker / dm

9

Page 10: Docker Workbench

Compose why?❖ Was gibt es Neues?

❖ Neues Konfigurations-Schema.

❖ Vollständige Implementierung Networking Feature.

❖ Möglichkeit feinteiligen Service-Network Platzierung.

❖ Möglichkeit zur vordefinierten Build-Reihenfolge.

❖ Unterstützung von zusätzlichen Build-Argumenten.

❖ Allgemeine Verbesserung in der YAML-Struktur.

10

Page 11: Docker Workbench

Compose why?❖ Alternativen

❖ Dusty (https://github.com/gamechanger/dusty)

❖ Ansatz einer nativen Workbench, Inter-Container File-Transfer, sehr gute OS-X Integration, spec’s

❖ Gockerize (https://github.com/aerofs/gockerize)

❖ Compose Ansatz für das container-basierende micro-service deployment von GO Applikationen.

11

Page 12: Docker Workbench

Compose why?❖ Alternativen

❖ Rocket/CoreOS (Enterprise Container Plattform)

❖ Rocket (rkt) als Alternative zu Docker

❖ Key/Value Store Communication (etcd)

❖ Direkte Unterstützung von Kubernetes

❖ Warehouse-Scale Computer (systemd@fleet)

❖ Docker-kompatible Definitions-Struktur

12

Page 13: Docker Workbench

Compose why?❖ Alternativen

❖ Kubernetes (Enterprise Container Management)

❖ Das Tool zur Orchestration von Container Cluster

❖ Umfangreiches Management dieser „Pod’s“

❖ Verwaltung der zugehörigen Laufzeitumgebung

❖ wirklich persistente Volumen-Container

❖ sehr guter Network Layer (flannel) + etcd Unterstützung

13

Page 14: Docker Workbench

docker in action, … composing and practical issues

DOCKER COMPOSE

Part 2, Atlassian Workbench

14

Page 15: Docker Workbench

Atlassian Workbench❖ Was ist eine Workbench?

❖ praktisches Beispiel „Atlassian Services“

❖ Ziel & Service-Architektur

❖ Konfigurations-Struktur

❖ Backup-Strategien

❖ Lastverteilungs-Strategien

❖ Best Practices

15

Page 16: Docker Workbench

Atlassian Workbench❖ Was ist eine Workbench?

❖ „Application-Node Service Stack (Development)“

❖ Bereitstellung einer Container-Node-Kopie von komplexen Anwendung-Infrastrukturen als lokale Entwicklungs-Umgebungen.

❖ „Application-Group Service Stack (Productive)“

❖ Eine gruppierte Container Infrastruktur verschiedener Dienste mit Anwendungs-Charakter.

16

Page 17: Docker Workbench

Atlassian Workbench❖ praktisches Beispiel „Atlassian Services“ ⇢Ziel?

❖ Aufbau einer Service-Infrastruktur zur Container-basierenden Bereitstellung von drei verschiedenen Atlassian Applikationen

❖ JIRA, Confluence, Bitbucket-Server

❖ Verwendung eigener docker-images ⇢ docker-hub

❖ Container sollten lastoptimiert konfiguriert werden.

17

Page 18: Docker Workbench

Atlassian Workbench❖ praktisches Beispiel „Atlassian Services“ ⇢Architektur

❖ NGINX Proxy als Service-Kommunikator

❖ JIRA, Confluence, Bitbucket-Server in aktueller Version als Einzel-Container

❖ Drei Anwendungsspezifische MySQL Container

❖ Möglichkeit zur Nutzung von Daten-Containern für MySQL- und Atlassian-Data Volumes schaffen.

18

Page 19: Docker Workbench

Atlassian Workbench

JIRA (tomcat)

NGINX (Reverse Proxy)

MySQL db

CONFLUENCE (tomcat)

MySQL db

BITBUCKET (tomcat)

MySQL db

user

data only data only data only

ssh

⇢Architektur/Grundstruktur19

Page 20: Docker Workbench

Atlassian Workbench

JIRA (tomcat)

NGINX (Reverse Proxy)

MySQL db

CONFLUENCE (tomcat)

MySQL db

BITBUCKET (tomcat)

MySQL db

user

data only data only data only

ssh80/443

3306 3306 3306

79998080 79908090

⇢Architektur/Grundstruktur+Ports20

Page 21: Docker Workbench

Atlassian Workbench❖ Konfigurations-Struktur ⇢ docker-compose.yml

❖ Verwendung des neuen Konfigurations-Formats

❖ Networking als Link-Ersatz

❖ Container-Dependencies zur genauen Definition der geforderten Build-Reihenfolge

❖ Definition einer „Lastgrenze“ für alle sich in der Workbench befindlichen Container.

21

Page 22: Docker Workbench

Atlassian Workbench❖ Konfigurations-Struktur

⇢ NGINX

⇢ JIRA

⇢ BITBUCKET

⇢ CONFLUENCE

⇢ MySQL Micro-Services (inklusive Daten-Container)

22

⇢ Quellen stehen im Repository zur Verfügung

Page 23: Docker Workbench

Atlassian Workbench❖ Backup Strategien

❖ Anwendungs-Container benötigen funktionierende Backup-Strategien!

❖ Container sind isolierte Prozesse, besitzen daher nur zur Laufzeit Daten-Persistenz

❖ Container sind vom Host aus jederzeit erreichbar

❖ Ich möchte 3 verschiedene Ansätze vorstellen …

23

Page 24: Docker Workbench

Atlassian Workbench❖ Backup Strategien

1. Der Data-Volume Ansatz: ⇢ Ein definiertes Host-Verzeichnis wird dem Container Als Daten-Verzeichnis zur Verfügung gestellt.

2. Der Daten-Container Ansatz: ⇢ Eine zur Startzeitpunkt erstellte „Schattenkopie“ des Ziel-Containers dient als eigentliches Union-FS …

24

Page 25: Docker Workbench

Atlassian Workbench❖ Backup Strategien

3. Der „Exec-Pipe“ Ansatz: ⇢ Script für Atlassian DB- und File-Backup findet ihr im GIT Repository unter „df-atls-base/scripts“

25

Page 26: Docker Workbench

Atlassian Workbench❖ Lastverteilungs-Strategien

❖ Ein aktiver Container unter Last nutzt alle verfügbaren Ressourcen desTrägersystems. ⇢ dies kann (in Verbindung mit dem Restart-Feature) zu unangenehmen Nebenwirkungen führen!

❖ Eine Vor-Definition der Verfügbaren Ressourcen ist Grundsätzlich keine schlechte Idee.

26

Page 27: Docker Workbench

Atlassian Workbench❖ Lastverteilungs-Beispiel:

27

Page 28: Docker Workbench

Atlassian Workbench❖ Best Practices

❖ Docker

❖ Bitte keine Container Umzugs-Hysterie entwickeln.

❖ Falls doch, den Micro-Service in angepasster Umgebung leben lassen.

❖ Keine multiplen Dienste in einem Container platzieren und diese über supervisor laufen lassen.

28

Page 29: Docker Workbench

Atlassian Workbench❖ Best Practices

❖ Dockerfile-Struktur

❖ Zusammenhängende Bild-Prozesse aneinander binden, somit überflüssige Layer vermeiden.

❖ Umgebungsvariablen für Setup nutzen.

❖ Verwendung von Start-/CleanUp-Scripts anstreben.

29

Page 30: Docker Workbench

Atlassian Workbench❖ Best Practices

❖ Allgemeines

❖ Bash Skripte/Alias-Definitionen für Docker- Commands erstellen.

❖ Laufzeit Monitoring nicht vernachlässigen

❖ Vorsichtiger Einsatz in Produktiv-Umgebungen.

30

Page 31: Docker Workbench

Questions ?

31

Page 32: Docker Workbench

Thank You❖ Links/Referenzen

❖ https://blog.codecentric.de/2015/05/microservice-deployment-ganz-einfach-mit-docker-compose

❖ https://blog.codeship.com/docker-machine-compose-and-swarm-how-they-work-together/

❖ Beispiel-Code Repository

❖ https://github.com/dunkelfrosch/docker-atlassian-wb

32