Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Docker In Practise Best Practises Dipl. - Inf. Steffen Bleul

Ähnliche Präsentationen


Präsentation zum Thema: "Docker In Practise Best Practises Dipl. - Inf. Steffen Bleul"—  Präsentation transkript:

1 Docker In Practise Best Practises Dipl. - Inf. Steffen Bleul
IT-Consultant Anwendungsentwicklung

2 Über den Vortragenden Dipl. – Inf. Steffen Bleul
4 Jahre Wissenschaftlicher Mitarbeiter Universität Kassel -> Web Services and Semantic Web 6 Jahre Softwareentwicklung München Seit 2015 Freelancer IT-Consulting Anwendungsentwicklung Seit April 2015 Blacklabelops Docker Images auf Github

3 Eigene Docker Erfahrung
2 Jahre Bau von Community Images bei Github und Dockerhub 28 Github Repositories 36 Dockerhub Repositories 82 gewartete Images bei Dockerhub Vollautomatisiertes Build und Deployment Daily Build erzeugt ca. 1,5 TB/Monat Transfervolumen Zwischen 2 tausend, 1 Million Docker Pulls

4 Inhalt Was bringt Docker und Wo wird es eingesetzt?
Praxisbeispiel „Wordpress“ 3 Level System für Docker Infrastruktur

5 Warum Docker? ROI! Weniger Server: $1k/Monat pro Server Ersparnis
Üblich ist eine Konsolidierung 30% an Servern zwischen development und testing: Ersparnis: 6 $1k/Monat= $6k/Monat= $72k/Jahr Weniger VMs: $340$/Monat weniger Lizenz- und Managementkosten Üblich ist eine Konsolidierung von 50% an VMs Ersparnis: $/Monat = $3.4k/Monat = $40.8k/Jahr Quelle: https://boxboat.com/2016/10/26/simple-roi-formula-docker-datacenter/

6 Docker Umfrage 2016 47% der Befragten sind im der Softwareentwicklung beschäftigt. 59% wenden Docker in der Entwicklung an 51% sogar in der Produktion Verbesserung der MTTR (Mean Time To Respond) 37% geben an „keine Veränderung“ 27% geben an 10%-25% schneller reagieren zu können 23% geben an 25%-50% schneller reagieren zu können Quelle: https://www.docker.com/survey-2016

7 Docker! Was ist neu? Docker 1.13 ist raus! Neues seit Docker 1.10
Deployment vom docker-compose Orchestrierung (1.12 Beta) App-Armor Configs für Container Beta: Infrakit „Self-Healing Infrastructure“ Neues seit Docker 1.10 Refactoring: runc, containerd, Docker Engine OCI: https://www.opencontainers.org/

8 World of Docker RHEL Open Shift DNS Server Docker Data Center
Docker Compose Consul Kubernetes Kattle Flannel Elk/Fluentd Flocker Docker Cloud Service Registry Docker Mesos CoreOS Devicemapper Rancher Docker-Swarm Vagrant Aufs Container Registry Pod Manifest Vault Prometheus Alpine

9 Docker und Wordpress

10 Enterprise Docker Level 1
Docker Engine: Docker Toolbox (Windows Pre Windows 10) Windows Native Mac Native Linux Native Dockerisierung der Applikation Applikation Dockerisierbar? Welches Betriebssystem Host? Welches Betriebssystem Images? Umgang mit Immutable Images Reproduzierbarkeit des Builds Update and Upgrade der Applikation? Dockerfiles: Versionskontrolle Betriebssystem Installationsdateien Betriebssystem: Windows Mac Linux

11 Dockerisierung Software sollte keine Installationsroutine, oder automatisierbare Installationsroutine haben. Persistieren des Zustand: Die Applikation sollte in einem Arbeitsverzeichnis ungleich dem Installationsverzeichnis arbeiten. Abhängigkeiten der Applikation? Möglichst keine Abhängigkeiten zu System-Demons Keine Abhängigkeiten zu lokalen Prozessen Die Applikation sollte als blockender Prozess laufen können. Die perfekte Docker Applikation aktualisiert sich selbst. Logs müssen auf Systemout gelenkt werden können. Keine Logfiles in Images

12 Docker Images Best Practise
Dockerfiles Container sollte nicht mit Root laufen. Container sudo Ersatz gosu: https://github.com/tianon/gosu Alle notwendigen externen Ports sollten deklariert sein. Volumes sollten explizit deklariert sein. Entrypoints: Mit tini ausgeführt: https://github.com/krallin/tini Mehrere Modi: Applikation, Bash und Parametrisierung Vererbungshierarchie und Layering der Images

13 Docker Images Wahl der Hierarchie der Images Layering
Wiederverwendung von Base Images: Betriebssysteme: CentOS, Ubuntu, Alpine Runtime Umgebungen: Java, Python, Perl Tools: Maven, Gradle Ziel: Einheitliche Images mit wenig Wartungsaufwand Layering Viele Layer haben Performanzauswirkung. Layer Squashing fester Bestandteil von Docker 1.13

14 Layering und Base Images
Fragestellung: Wann macht Imagevererbung Sinn? Es gibt mehrere Ausprägungen des Image Ein Image braucht eine dedizierte Testsuite Alternative: Ausprägungen als Tags: blacklabelops/jobber:aws CI-Build Jenkins Circle-CI Gitlab Registry Gitlab Dockerhub Artifactory

15 Manage Images Pro Image ein Repository unter Versionskontrolle
Updates auf Development Branches als Commits verwalten. Releases als Merges auf Release Branches verwalten. Neue Images als Branches verwalten. Minimierung des Wartungsaufwandes durch Minimierung von Release Branches! Images werden in einem Image Registry verwaltet: Alle Images sind zu taggen! Kein „latest“ verwenden. Für alle Branches ein Tag zur Verfügung stellen

16 Community Images Dockerisierung kann beliebig weit getrieben werden!
Beispiel: $ docker run -d \ -p 80:80 \ --name nginx \ -e "SERVER1REVERSE_PROXY_LOCATION1=/" \ -e "SERVER1REVERSE_PROXY_PASS1=http://www.heise.de" \ -e "SERVER1REVERSE_PROXY_LOCATION2=/alternate" \ -e "SERVER1REVERSE_PROXY_PASS2=http://www.alternate.de" \ blacklabelops/nginx

17 Best Practise Quellen Best practices for writing Dockerfiles: https://docs.docker.com/engine/userguide/eng- image/dockerfile_best-practices/ Container Best Practises:

18 Enterprise Docker Level 2
Einrichten des Hosts Wahl des Anbieters Wahl des Betriebssystems Security Docker Kompositionsengine Logging Backup

19 Wahl des Anbieters Dedicated Servers Cloud Anbieter
Barebone ohne Virtualisierungslayer als Applikationsstack (http://www.projectatomic.io/) Cloud Anbieter VMs: AWS, G-Cloud, Azure, Bluemix, Digital Ocean, Linode, etc. Container-native: AWS EC2-CS, Google GCE, Azure-CS Container Management Plattform Docker-Cloud (https://cloud.docker.com)

20 Welcher Anbieter passt?
Container Management Plattform oder Container Service ist passend für „nicht-Container-native-OS“ . Beispiele: CentOS, Ubuntu, Debian etc. Weil: Bietet Management UI, Einblick in Logs, „SSH-Ersatz“, Deployment von Kompositionen Container-native-OS: Beispiele: CoreOS, Rancher Im Bauch: Management UI, Kompositionsengine Multi-Host-Networking: Docker-Swarm, Mesos, Kubernetes

21 Security Den Host sicher machen: Center for Internet Security (CIS)
Benchmarks für alle größeren Distributionen in den Leveln 1-2 Den Docker Demon absichern CIS Docker 1.13 Benchmark: https://benchmarks.cisecurity.org/tools2/docker/CIS_Docker_1.13.0_B enchmark_v1.0.0.pdf Benchmark als Docker Container: https://dockerbench.com Docker Images Scannen: CoreOS Clair https://github.com/coreos/clair Docker Demon Authorisierung: Twistlock https://github.com/twistlock/authz

22 Docker Container Keine einzelnen Container deployen, sondern Orchestrierung von Kompositionen Docker-compose, stackfiles, pod-manifests, cattle Keine Logs auf dem Server: Docker Logging Plugin auf Systeme wie fluentd, elk-stack und Cloud Logs wie https://www.loggly.com/ https://logentries.com/ https://papertrailapp.com/ Backups? Work-In-Progress. Cloud Lösung: Fli https://github.com/ClusterHQ/fli-docker Container: Volumerize https://github.com/blacklabelops/volumerize

23 Enterprise Docker Level 3
Multi-Host-Networking Docker-Swarm Mesos Kubernetes „Ephemeral VMs“ Infrastruktur Load Balancing Service Registry Monitoring

24 Ephemeral VM VM wird nicht geupdatet, sondern durch eine neue VM ersetzt. Zentrales firmenweites VM-Images CI-Build mit Hashicorp Packer: https://www.packer.io/intro/ Kickstart Files Provisioning: Shell, Puppet, Chef Multiple VM-Technologien: VMWare, Virtualbox, AWS-AMI Management und Rollout der Infrastruktur: Hashicorp Terraform: https://www.terraform.io/

25 Loadbalancing/Service Registry/Monitoring
Nginx: https://www.nginx.com/blog/service-discovery-with-nginx-plus- and-consul/ Traefik: https://traefik.io/ Service Registry Etcd, Consul, SkyDNS Sidekick Container Registrator: https://github.com/gliderlabs/registrator Monitoring: Cadvisor: https://github.com/google/cadvisor Prometheus: https://prometheus.io/

26 Wo geht die Reise hin? Viele „Aspekte“ sind noch Open Source Projekte im „Alpha Status“: Beispiel Rancher Insbesondere für Volume Management und Host/Image User-Mapping sind noch Lösungen zu erwarten Produktlösungen wie Red Hats „Open Shift“ werden noch vermehrt kommen.

27 Vielen Dank für Ihre Aufmerksamkeit!
Wie geht es weiter? Links zu den Projekten und Produkten sind den Folien zu entnehmen! Meine Open-Source Projekte auf Github: https://github.com/blacklabelops


Herunterladen ppt "Docker In Practise Best Practises Dipl. - Inf. Steffen Bleul"

Ähnliche Präsentationen


Google-Anzeigen