10. Juli 2015
Docker - ein Workshop für DevOps
Experten Forum Stuttgart
Abstract
DevOps mit Docker - ein Workshop für Softwareentwickler und
Systemadministratoren
Docker zieht seit einiger Zeit ...
Christian Noack
Dipl.-Informatiker
Software-Entwicklung seit 1988
Selbstständig seit 2004
Agile Methoden
Projektmanagement...
Am Ende der Software-Enwicklung:
Bauen der Software
⟹ Auslieferung
⟹ Systemintegration
⟹ Ausführung
Systemintegration ist ...
Am Ende der Software-Enwicklung:
Bauen der Software
⟹ Auslieferung
⟹ Systemintegration
⟹ Ausführung
Systemintegration ist ...
Rental King
ein fiktives Praxisbeispiel
Rental King
Herbert Hitzegrad Baumaschinenverleih
10 Mitarbeiter
1 Standort
Windows-PC
Standard-SW
Rental King
Herbert Hitzegrad Baumaschinenverleih
10 Mitarbeiter
1 Standort
Windows-PC
Standard-SW
Trailer Rental

Stachov...
Erste Aufgabe der IT
✤ Einführung SAP
✤ Entwicklung einer spezialisierten Software für Verleih/
Vermietung
✤ Systemhaus
Erste Aufgabe der IT
✤ Einführung SAP
✤ Entwicklung einer spezialisierten Software für Verleih/
Vermietung
✤ Systemhaus Pe...
Software-Entwicklung
✤ non fuctional requirements:
✤ Java, JBoss, SAP-Anbindung, Postgresql
✤ Betrieb im Rechenzentrum „Ha...
Initialisierung
✤ Neue Funktionalität getrieben durch Fachabteilung
oder Gesetzgeber
✤ Anforderungsanalyse IT/FA
✤ Prioris...
Implementierung
✤ Test am Ende einer Iteration auf Entwicklungsserver von Peek
& Poke
✤ Debian 7, JBoss 7, Postgresql 9.4,...
Installation in Abnahmeumgebung
✤ Abnahme bei Rental King
✤ lokaler physischer Server im Intranet
✤ PC, 16 GB, Ubuntu 14.0...
Installation in
Produktionsumgebung
✤ Übertragung: war, jar, Config-Files, Migrationsscripts, modif.
Installationsdateien
...
Weiterentwicklung
✤ Erweiterungen
✤ Neue Online-Angebote für Kunden
✤ Internes PM & Ticketing-System (Redmine)
✤ ….
✤ Teil...
Probleme
✤ umgebungsspez. Konfigurationen
✤ Probleme bei Deployment d. Java-Anwendungen
✤ OutOfMemory, HeapSpace, Rechte, ...
„Die Systemintegration wird häufig völlig unterschätzt.“
– Jens-Uwe Pipka
„Die Systemintegration wird häufig völlig unterschätzt.“
„Die Systemintegration wird häufig völlig unterschätzt.“
Ursache ist die starke Trennung zwischen
Software-Entwicklung und...
„Die Systemintegration wird häufig völlig unterschätzt.“
Ursache ist die starke Trennung zwischen
Software-Entwicklung und...
Alternative: Scripting
✤ Umgebungsspez. Scripts für autom. Installation
✤ Wo werden Scripts getestet?
✤ Scripts unterliege...
Alternative: Container
✤ Docker (www.docker.com)
✤ RKT/Rocket (https://coreos.com/rkt/docs/latest/)
Wie kam es dazu?
✤ 1995: Konrad Zuse trifft Bill Gates auf der CeBit
✤ Zuse: Rechner über Funktion aus, Software beschreib...
Entkopplung Software/Hardware
✤ In der Software-Entwicklung Trennung von
Applikationscode und Hardware durch virtualisiert...
Web 2.0
✤ 2000er: Google, Facebook, Amazon (RZ, Cloud-
Services, Kindle)
✤ SW übt Funktion aus, HW annähernd beliebig
✤ HW...
Entwicklung vs. Betrieb
✤ Entwicklung immer öfter virtualisiert
✤ Virtual Box, Vagrant …
✤ Betrieb i.d.R. in traditionelle...
Etablierung der Container-
Technologie 2013
Vollständige Entkopplung von Software und Hardware
Beispiel
✤ Einführung eines Redmine-Systems bei Rental King
✤ Dazu brauchen wir:
✤ Redmine
✤ Postgresql-Datenbank
✤ Anbind...
Non functional requirements
✤ Portierbarkeit
✤ Kapselung
✤ Reproduzierbarkeit
✤ Testbarkeit
✤ Unabhängigkeit von Ausführun...
Kapselung
✤ Redmine und Postgresql soweit kapseln, dass bereits
bei Entwicklung alles enthalten ist, was später in der
Pro...
Kapselung
BUILD, SHIP, RUN !
Minimale Vorraussetzungen an
Ausführungsumgebung
✤ Linux-Kernel > 3.x
✤ Docker-Installation > 1.5
✤ Minimales OS (CoreOs, ...
Gewünschte Entkopplung der
Container
✤ Container enthält alles was für Ausführung der
Anwendung benötigt wird
✤ Container ...
Gewünschte Entkopplung der
Container
✤ Container enthält alles was für Ausführung der
Anwendung benötigt wird
✤ Container ...
Gewünschte Entkopplung der
Container
POSTGRESQL REDMINE
Zuerst
DockerHub
Produktionsumg.
Dockerfile
LokaleUmgebung
Image
Basis-
Image
EngineContainer
Image
EngineContainer
Vorraussetzungen f. Entwicklung
✤ Linux-System 64bit (physikl. oder virtuell)
✤ Kernel 3.x
✤ Docker-Installation> 1.6
✤ Wi...
Mac OS X
Git
Safari
Atom
Virtual Box Server (Vagrant)
Postgres
Redmine
Registry
Volume
FS
FSConsole
Docker Commands
virtua...
Mac OS X
Git
Safari
Atom
Virtual Box Server (Vagrant)
Postgres
Redmine
Registry
Volume
FS
FSConsole
Docker Commands
virtua...
Mac OS X
Git
Safari
Atom
Virtual Box Server (Vagrant)
Postgres
Redmine
Registry
Volume
FS
FSConsole
Docker Commands
virtua...
V1: Funktionsloses Image
✤ Dockerfile
✤ docker build
✤ Versionsnummer
✤ Layer
✤ docker run mit /bin/bash
✤ FROM, MAINTAINE...
V2: Postgres installieren
✤ Layer
✤ Ubuntu apt-get im Container
✤ CMD
V3: Postgres-Konfiguration
✤ Start von Postgres
✤ ADD, EXPOSE, ENTRYPOINT
✤ Start mit -P oder -p 5555:5432
V4: Volumes
✤ Datenverlust bei Neustart des Containers, weil Daten im Container
✤ Container wächst
✤ Ziel:
✤ Daten im Cont...
V5: Volumes
✤ Festgelegte Volumes im Host Filesytem
✤ Starten mit -v
✤ Entfernen von Volume aus Dockerfile
✤ Einführung ei...
V6: Volume Container
✤ Volume Container statt direct mounting auf Host FS
✤ Host-FS an Volume Container gebunden
✤ Postgre...
Redmine
Registry
8081
8081
805000
Mac OS X
Git
Safari
Atom
Virtual Box Server (Vagrant)
Postgres Volume
FS
FSConsole
Docke...
Redmine
Registry
8081
8081
805000
Mac OS X
Git
Safari
Atom
Virtual Box Server (Vagrant)
Postgres Volume
FS
FSConsole
Docke...
V7: Parameter
✤ Parameter f. Postgres-Container beim Run mitgeben
✤ DB-Password über Kommandozeile abfragen
docker run … -...
V8: Besseres Init-System
✤ Bisher Ubuntu Basis-Image:
✤ Start der Anwendung mit CMD oder ENTRYPOINT
✤ Problem: Ubuntu-Init...
V8: Phusion Base-Image
✤ bislang kein syslog und kein cron
✤ Umstellung von Ubuntu auf Phusion
✤ Sauberes Init-System mit ...
Granularität
✤ Microservices vs. Anwendungen
✤ Was ist Infrastruktur?
✤ Was gehört in einen Container?
V10: Redmine-Container
✤ Erstellen des vorbereiteten Redmine-Images
✤ Einbinden des Volume-Containers
✤ Linking an Postgre...
Mac OS X
Git
Safari
Atom
Virtual Box Server (Vagrant)
Postgres
Redmine
Registry
Volume
FS
FSConsole
Docker Commands
virtua...
Mac OS X
Git
Safari
Atom
Virtual Box Server (Vagrant)
Postgres
Redmine
Registry
Volume
FS
FSConsole
Docker Commands
virtua...
Transfer Image in Target Env
✤ Zielumgebung aufbauen: Linux 64 + Docker
✤ Manuelles Kopieren der Images
✤ Anlegen der Star...
Eigene Registry verwenden
✤ Statt DockerHub
✤ Registry aus Basis-Image erstellen und starten
✤ Images pushen
✤ Images auf ...
sudo docker tag agilemethoden/postgres:v8 

localhost:5000/agilemethoden/postgres:v8
sudo docker images
Vorhandenes Image ...
Mac OS X
Git
Safari
Atom
Virtual Box Server (Vagrant)
Postgres
Redmine
Registry
Volume
FS
FSConsole
Docker Commands
virtua...
Ausblick
✤ Weiterentwicklung Docker
✤ Konkurrenz Rocket
✤ Management-Tools:
✤ Consul
✤ Kubernetes
✤ Docker-Machine
✤ Fabri...
Sinnvolle Kommandos
sudo docker inspect -f "{{.Volumes}}" containername
sudo docker run -t -i -p 5555:5432 -d —name contai...
„noch Fragen?“
Danke
Folien zum Vortrag auf
http://de.slideshare.net/agilemethoden/docker-workshopefs2015
Infos zum Autor auf
http://www....
Nächste SlideShare
Wird geladen in …5
×

Docker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbH

927 Aufrufe

Veröffentlicht am

Slide of a workshop about DevOps with Docker in German.

DevOps mit Docker - ein Workshop für Softwareentwickler und Systemadministratoren

Docker zieht seit einiger Zeit viel Aufmerksamkeit auf sich, hauptsächlich weil es das aktuelle sehr populäre Thema DevOps adressiert. Bei Docker handelt es sich eine offene Plattform für Software-Entwickler und Sysadmins, mit der sie Software annähernd überall bauen, ausliefern und betreiben können. In diesem Workshop werden Sie lernen wie Software-Container gebaut, ausgeliefert, konfiguriert und betrieben werden. Der Vortragende wird sie anhand von praktischen Beispielen an seinen Erfahrungen teilhaben lassen.

Veröffentlicht in: Software
0 Kommentare
3 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

Keine Downloads
Aufrufe
Aufrufe insgesamt
927
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
5
Aktionen
Geteilt
0
Downloads
17
Kommentare
0
Gefällt mir
3
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

Docker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbH

  1. 1. 10. Juli 2015 Docker - ein Workshop für DevOps Experten Forum Stuttgart
  2. 2. Abstract DevOps mit Docker - ein Workshop für Softwareentwickler und Systemadministratoren Docker zieht seit einiger Zeit viel Aufmerksamkeit auf sich, hauptsächlich weil es das aktuelle sehr populäre Thema DevOps adressiert. Bei Docker handelt es sich eine offene Plattform für Software-Entwickler und Sysadmins, mit der sie Software annähernd überall bauen, ausliefern und betreiben können. In diesem Workshop werden Sie lernen wie Software-Container gebaut, ausgeliefert, konfiguriert und betrieben werden. Der Vortragende wird sie anhand von praktischen Beispielen an seinen Erfahrungen teilhaben lassen.
  3. 3. Christian Noack Dipl.-Informatiker Software-Entwicklung seit 1988 Selbstständig seit 2004 Agile Methoden Projektmanagement Software-Entwicklung Gesamter Software-Lifecycle Banken, Versicherung, Logistik, Gesundheitswesen www.agile-methoden.de
  4. 4. Am Ende der Software-Enwicklung: Bauen der Software ⟹ Auslieferung ⟹ Systemintegration ⟹ Ausführung Systemintegration ist ein häufig vernachlässigtes Thema mit unerwartet hohem Aufwand Unsere heutige Agenda daher:
  5. 5. Am Ende der Software-Enwicklung: Bauen der Software ⟹ Auslieferung ⟹ Systemintegration ⟹ Ausführung Systemintegration ist ein häufig vernachlässigtes Thema mit unerwartet hohem Aufwand Unsere heutige Agenda daher: BUILD, SHIP, RUN !
  6. 6. Rental King ein fiktives Praxisbeispiel
  7. 7. Rental King Herbert Hitzegrad Baumaschinenverleih 10 Mitarbeiter 1 Standort Windows-PC Standard-SW
  8. 8. Rental King Herbert Hitzegrad Baumaschinenverleih 10 Mitarbeiter 1 Standort Windows-PC Standard-SW Trailer Rental
 Stachoviak Zick Zack
 Maschinenverleih Fusionierung 200 Mitarbeiter 40 Standorte Gründung IT-Abteilung
  9. 9. Erste Aufgabe der IT ✤ Einführung SAP ✤ Entwicklung einer spezialisierten Software für Verleih/ Vermietung ✤ Systemhaus
  10. 10. Erste Aufgabe der IT ✤ Einführung SAP ✤ Entwicklung einer spezialisierten Software für Verleih/ Vermietung ✤ Systemhaus Peek & Poke
  11. 11. Software-Entwicklung ✤ non fuctional requirements: ✤ Java, JBoss, SAP-Anbindung, Postgresql ✤ Betrieb im Rechenzentrum „Hans Petersen“ ✤ Installation, Wartung, Backup durch HaPe ✤ RHEL, SAP als Service
  12. 12. Initialisierung ✤ Neue Funktionalität getrieben durch Fachabteilung oder Gesetzgeber ✤ Anforderungsanalyse IT/FA ✤ Priorisierung, Festlegung des Umfangs ✤ Festpreisprojekt ✤ Iterative Entwicklung mit Change-Management
  13. 13. Implementierung ✤ Test am Ende einer Iteration auf Entwicklungsserver von Peek & Poke ✤ Debian 7, JBoss 7, Postgresql 9.4, JDK8, SAP-Testserver ✤ Nach 5 Iterationen ⟹ Release ✤ Lieferung von P&P: ✤ War-Files, Jar-Files, Konfigurationsdateien ✤ Migrationsscripts, Installationsanleitung
  14. 14. Installation in Abnahmeumgebung ✤ Abnahme bei Rental King ✤ lokaler physischer Server im Intranet ✤ PC, 16 GB, Ubuntu 14.04 LTS ✤ Postgresql 9.3, JDK 7, JBoss 6 ✤ Manuelle Installation: ✤ Kopieren, Stoppen, Starten, Konfigurationsdateien anpassen ✤ Files löschen, sichern usw. einige manuelle Anpassungen wg. Versionsinkompabilitäten ✤ Test & Abnahme durch Fachabteilung
  15. 15. Installation in Produktionsumgebung ✤ Übertragung: war, jar, Config-Files, Migrationsscripts, modif. Installationsdateien ✤ Manuelle Installation im RZ durch Mitarbeiter von HaPe ✤ Zielumgebung: ✤ REHL 7, JBoss 6, JDK 7, Postgresql 9.2, SAP as a Service ✤ Einige Probleme bei Installation, manuelle Korrekturen ✤ Test durch IT v. Rental King ⟹ Freigabe ✤ Online Schaltung durch HaPe
  16. 16. Weiterentwicklung ✤ Erweiterungen ✤ Neue Online-Angebote für Kunden ✤ Internes PM & Ticketing-System (Redmine) ✤ …. ✤ Teilweise entwickelt durch Peek & Poke ✤ Teilweise Open-Source ✤ Umzug in neues Rechenzentrum
  17. 17. Probleme ✤ umgebungsspez. Konfigurationen ✤ Probleme bei Deployment d. Java-Anwendungen ✤ OutOfMemory, HeapSpace, Rechte, Systemabhängigkeiten, fehlende Bibliotheken, falsche Java-Version ✤ Eingriffe durch das RZ notwendig ✤ Rollback ≙ Neuauslieferung ✤ Unterschiedliche Installationsprozesse für verschiedene Anwendungen (Java, RoR, …) ✤ Umzug auf neuen Server bedeutet Neuinstallation
  18. 18. „Die Systemintegration wird häufig völlig unterschätzt.“ – Jens-Uwe Pipka
  19. 19. „Die Systemintegration wird häufig völlig unterschätzt.“
  20. 20. „Die Systemintegration wird häufig völlig unterschätzt.“ Ursache ist die starke Trennung zwischen Software-Entwicklung und Betrieb Thema gewinnt in letzter Zeit deutlich an Interesse
  21. 21. „Die Systemintegration wird häufig völlig unterschätzt.“ Ursache ist die starke Trennung zwischen Software-Entwicklung und Betrieb Thema gewinnt in letzter Zeit deutlich an Interesse DevOps
  22. 22. Alternative: Scripting ✤ Umgebungsspez. Scripts für autom. Installation ✤ Wo werden Scripts getestet? ✤ Scripts unterliegen kontinuierliche Anpassung ✤ Nicht trivial ✤ Nur umgebungsspezifische Reproduzierbarkeit
  23. 23. Alternative: Container ✤ Docker (www.docker.com) ✤ RKT/Rocket (https://coreos.com/rkt/docs/latest/)
  24. 24. Wie kam es dazu? ✤ 1995: Konrad Zuse trifft Bill Gates auf der CeBit ✤ Zuse: Rechner über Funktion aus, Software beschreibt Funktion. Software alleine wertlos ✤ Gates erkennt Wert von Software unabhängig von Hardware ✤ Gates betrachtet Trennung aber vor allem betriebswirtschaftl. ✤ Techn. besteht Abhängigkeit (Intel-Prozessoren)
  25. 25. Entkopplung Software/Hardware ✤ In der Software-Entwicklung Trennung von Applikationscode und Hardware durch virtualisierte Ausführungsumgebung für Bytecode (Smalltalk-80, Java 1995) ✤ Bytecode ist HW-unabhängig ✤ VM ist Prozessor und OS-spezifisch ✤ Portable Software
  26. 26. Web 2.0 ✤ 2000er: Google, Facebook, Amazon (RZ, Cloud- Services, Kindle) ✤ SW übt Funktion aus, HW annähernd beliebig ✤ HW durch Virtualisierung vollständig abstrahiert ✤ Verwendung von eigenen Virtualisierungstechniken ✤ Linux Kernel LXC
  27. 27. Entwicklung vs. Betrieb ✤ Entwicklung immer öfter virtualisiert ✤ Virtual Box, Vagrant … ✤ Betrieb i.d.R. in traditioneller Infrastruktur ✤ Standardisierten Virtualisierungsverfahren erst am Anfang ✤ Ausnahme: ✤ RZ für Privatkunden und kleinere Unternehmen (HostEurope, Strato, Hetzer) ✤ Spezialisierte RZ (Heruko)
  28. 28. Etablierung der Container- Technologie 2013 Vollständige Entkopplung von Software und Hardware
  29. 29. Beispiel ✤ Einführung eines Redmine-Systems bei Rental King ✤ Dazu brauchen wir: ✤ Redmine ✤ Postgresql-Datenbank ✤ Anbindung an vorhandenen SMTP-Server
  30. 30. Non functional requirements ✤ Portierbarkeit ✤ Kapselung ✤ Reproduzierbarkeit ✤ Testbarkeit ✤ Unabhängigkeit von Ausführungsumgebung ✤ OS-Version ✤ Installierte Systembibliotheken
  31. 31. Kapselung ✤ Redmine und Postgresql soweit kapseln, dass bereits bei Entwicklung alles enthalten ist, was später in der Produktion gebraucht wird ✤ bis auf: vorhandene Infrastrukturkomponenten: ✤ SMTP-Server ✤ Storage (NAS/SAN)
  32. 32. Kapselung BUILD, SHIP, RUN !
  33. 33. Minimale Vorraussetzungen an Ausführungsumgebung ✤ Linux-Kernel > 3.x ✤ Docker-Installation > 1.5 ✤ Minimales OS (CoreOs, TinyOs) oder vollständiges OS (Ubuntu, Debian, RedHat …) ✤ Nicht benötigt: ✤ spezielle Bibliotheken/Systemblibliotheken ✤ Java-, PHP-, Ruby-Installationen
  34. 34. Gewünschte Entkopplung der Container ✤ Container enthält alles was für Ausführung der Anwendung benötigt wird ✤ Container können verbunden werden (Link) ✤ Unser Beispiel: 2 Container
  35. 35. Gewünschte Entkopplung der Container ✤ Container enthält alles was für Ausführung der Anwendung benötigt wird ✤ Container können verbunden werden (Link) ✤ Unser Beispiel: 2 Container POSTGRESQL REDMINE
  36. 36. Gewünschte Entkopplung der Container POSTGRESQL REDMINE Zuerst
  37. 37. DockerHub Produktionsumg. Dockerfile LokaleUmgebung Image Basis- Image EngineContainer Image EngineContainer
  38. 38. Vorraussetzungen f. Entwicklung ✤ Linux-System 64bit (physikl. oder virtuell) ✤ Kernel 3.x ✤ Docker-Installation> 1.6 ✤ Windows: boot2docker oder vagrant ✤ Mac: boot2docker, kitematic oder vagrant ✤ Empfehlung Debian-basiertes Linux-System
  39. 39. Mac OS X Git Safari Atom Virtual Box Server (Vagrant) Postgres Redmine Registry Volume FS FSConsole Docker Commands virtual box internal network Virtual Box Target (Vagrant) Volume Redmine Postgres FSConsole Docker Commands 8082 8081 5555 5555 8081 8081 5432805000
  40. 40. Mac OS X Git Safari Atom Virtual Box Server (Vagrant) Postgres Redmine Registry Volume FS FSConsole Docker Commands virtual box internal network Virtual Box Target (Vagrant) Volume Redmine Postgres FSConsole Docker Commands 8082 8081 5555 5555 8081 8081 5432805000
  41. 41. Mac OS X Git Safari Atom Virtual Box Server (Vagrant) Postgres Redmine Registry Volume FS FSConsole Docker Commands virtual box internal network Virtual Box Target (Vagrant) Volume Redmine Postgres FSConsole Docker Commands 8082 8081 5555 5555 8081 8081 5432805000
  42. 42. V1: Funktionsloses Image ✤ Dockerfile ✤ docker build ✤ Versionsnummer ✤ Layer ✤ docker run mit /bin/bash ✤ FROM, MAINTAINER, ENV sudo docker build -t agilemethoden/postgres:v1 .
  43. 43. V2: Postgres installieren ✤ Layer ✤ Ubuntu apt-get im Container ✤ CMD
  44. 44. V3: Postgres-Konfiguration ✤ Start von Postgres ✤ ADD, EXPOSE, ENTRYPOINT ✤ Start mit -P oder -p 5555:5432
  45. 45. V4: Volumes ✤ Datenverlust bei Neustart des Containers, weil Daten im Container ✤ Container wächst ✤ Ziel: ✤ Daten im Container sind volatil ✤ Persistente Daten außerhalb des containers ✤ Initialisierung immer automatisch ✤ Start mit -d als Daemon ✤ Definition des VOLUME im Dockerfile ✤ start/stop Daten bleiben erhalten
  46. 46. V5: Volumes ✤ Festgelegte Volumes im Host Filesytem ✤ Starten mit -v ✤ Entfernen von Volume aus Dockerfile ✤ Einführung eines Startskripts ✤ Rechte auf Ordner setzen ✤ Daten persistent im Filesystem
  47. 47. V6: Volume Container ✤ Volume Container statt direct mounting auf Host FS ✤ Host-FS an Volume Container gebunden ✤ Postgres-Container verwendet Volume-Container ✤ Volume-Container wird nur erzeugt, muss nicht laufen sudo docker create -v $PGDATA:/var/lib/postgresql/data … 
 --name docker-volume ubuntu:trusty /bin/true docker run … volumes-from docker-volume
  48. 48. Redmine Registry 8081 8081 805000 Mac OS X Git Safari Atom Virtual Box Server (Vagrant) Postgres Volume FS FSConsole Docker Commands virtual box internal network Virtual Box Target (Vagrant) Volume Redmine Postgres FSConsole Docker Commands 8082 8081 5555 5555 5432
  49. 49. Redmine Registry 8081 8081 805000 Mac OS X Git Safari Atom Virtual Box Server (Vagrant) Postgres Volume FS FSConsole Docker Commands virtual box internal network Virtual Box Target (Vagrant) Volume Redmine Postgres FSConsole Docker Commands 8082 8081 5555 5555 5432
  50. 50. V7: Parameter ✤ Parameter f. Postgres-Container beim Run mitgeben ✤ DB-Password über Kommandozeile abfragen docker run … -e DB_NAME_VAR='redmine' …
  51. 51. V8: Besseres Init-System ✤ Bisher Ubuntu Basis-Image: ✤ Start der Anwendung mit CMD oder ENTRYPOINT ✤ Problem: Ubuntu-Init-System (Upstart) läuft nicht ✤ Kind-Prozesse des CMD werden nicht abgeräumt ✤ Zombie-Prozesse im Container ✤ Probleme beim start/stop ✤ docker stop SIGTERM nur an obersten Prozess
  52. 52. V8: Phusion Base-Image ✤ bislang kein syslog und kein cron ✤ Umstellung von Ubuntu auf Phusion ✤ Sauberes Init-System mit SIGTERM-Behandlung ✤ Anpassung Dockerfile ✤ Neues Run-Script FROM phusion/baseimage:0.9.16
  53. 53. Granularität ✤ Microservices vs. Anwendungen ✤ Was ist Infrastruktur? ✤ Was gehört in einen Container?
  54. 54. V10: Redmine-Container ✤ Erstellen des vorbereiteten Redmine-Images ✤ Einbinden des Volume-Containers ✤ Linking an Postgres-Container
  55. 55. Mac OS X Git Safari Atom Virtual Box Server (Vagrant) Postgres Redmine Registry Volume FS FSConsole Docker Commands virtual box internal network Virtual Box Target (Vagrant) Volume Redmine Postgres FSConsole Docker Commands 8082 8081 5555 5555 8081 8081 5432805000
  56. 56. Mac OS X Git Safari Atom Virtual Box Server (Vagrant) Postgres Redmine Registry Volume FS FSConsole Docker Commands virtual box internal network Virtual Box Target (Vagrant) Volume Redmine Postgres FSConsole Docker Commands 8082 8081 5555 5555 8081 8081 5432805000
  57. 57. Transfer Image in Target Env ✤ Zielumgebung aufbauen: Linux 64 + Docker ✤ Manuelles Kopieren der Images ✤ Anlegen der Startskripts ✤ create volume ✤ start postgres ✤ start redmine
  58. 58. Eigene Registry verwenden ✤ Statt DockerHub ✤ Registry aus Basis-Image erstellen und starten ✤ Images pushen ✤ Images auf anderer Maschine (Target) pullen sudo docker run -d -p 5000:5000 --restart=always 
 --name registry registry:2
  59. 59. sudo docker tag agilemethoden/postgres:v8 
 localhost:5000/agilemethoden/postgres:v8 sudo docker images Vorhandenes Image taggen, damit es später in neue Registry übertragen werden kann: In neues Registry pushen sudo docker push localhost:5000/agilemethoden/postgres:v8 sudo docker pull 192.168.50.4:5000/agilemethoden/postgres:v8 Auf anderer Maschine aus dem Registry pullen
  60. 60. Mac OS X Git Safari Atom Virtual Box Server (Vagrant) Postgres Redmine Registry Volume FS FSConsole Docker Commands virtual box internal network Virtual Box Target (Vagrant) Volume Redmine Postgres FSConsole Docker Commands 8082 8081 5555 5555 8081 8081 5432805000
  61. 61. Ausblick ✤ Weiterentwicklung Docker ✤ Konkurrenz Rocket ✤ Management-Tools: ✤ Consul ✤ Kubernetes ✤ Docker-Machine ✤ Fabric8
  62. 62. Sinnvolle Kommandos sudo docker inspect -f "{{.Volumes}}" containername sudo docker run -t -i -p 5555:5432 -d —name containername agilemethoden/postgres:v4 sudo docker ps # Connect an laufenden Container
 sudo docker exec -t -i redminepg /bin/bash # Delete all containers
 sudo docker rm $(docker ps -a -q) # Delete all images
 sudo docker rmi $(docker images -q) # Delete all untagged images
 sudo docker rmi $(docker images | grep '^<none>' | awk '{print $3}')
  63. 63. „noch Fragen?“
  64. 64. Danke Folien zum Vortrag auf http://de.slideshare.net/agilemethoden/docker-workshopefs2015 Infos zum Autor auf http://www.agile-methoden.de Bei Fragen gerne auch: info@agile-methoden.de © 2015, Christian Noack, Agile Methoden GmbH

×