Docker für Entwickler



Ähnliche Dokumente
Docker für Java Entwickler

Dr. Roland Huß, ConSol* Docker für Java-Entwickler

Dr. Roland Huß ConSol* Docker für Java Entwickler

Kommunikationsübersicht XIMA FORMCYCLE Inhaltsverzeichnis

Planung für Organisation und Technik

Database Change Management für Continuous Delivery. Diana Lander und Andreas Falk NovaTec Consulting GmbH

Update und Konfiguraton mit dem ANTLOG Konfigurations-Assistenten

Thomas Wagner 2009 (im Rahmen der TA) Installation von MySQL 5.0 und Tomcat 5.5

Testplan. Hochschule Luzern Technik & Architektur. Software Komponenten FS13. Gruppe 03 Horw,

Build-Pipeline mit Jenkins

Die Installation des GeoShop Redirector für IIS (Internet Information Server, Version 4.0, 5.0 und 6.0) umfasst folgende Teilschritte:

:: Anleitung Hosting Server 1cloud.ch ::

The linux container engine. Peter Daum

Installation des GeoShop Redirector für Apache (Stand ) ================================================================

HP Service Virtualization. Bernd Schindelasch 19. Juni 2013

Lokale Installation von DotNetNuke 4 ohne IIS

Internet Explorer Version 6

Installation der 4Dv12sql Software für Verbindungen zum T.Base Server

Was ist PDF? Portable Document Format, von Adobe Systems entwickelt Multiplattformfähigkeit,

Installationsanleitung für pcvisit Server (pcvisit 12.0)

Workshop: Eigenes Image ohne VMware-Programme erstellen

Xerox Device Agent, XDA-Lite. Kurzanleitung zur Installation

Container als Immutable Infrastructure. John M. Hutchison

Powermanager Server- Client- Installation

Handbuch. timecard Connector Version: REINER SCT Kartengeräte GmbH & Co. KG Goethestr Furtwangen

Albert HAYR Linux, IT and Open Source Expert and Solution Architect. Open Source professionell einsetzen

Softwaretests in Visual Studio 2010 Ultimate Vergleich mit Java-Testwerkzeugen. Alexander Schunk Marcel Teuber Henry Trobisch

Installation von NetBeans inkl. Glassfish Anwendungs-Server

Wo finde ich die Software? - Jedem ProLiant Server liegt eine Management CD bei. - Über die Internetseite

TimeMachine. Installation und Konfiguration. Version 1.4. Stand Dokument: installcentos.odt

Oracle APEX Installer

OSx / MAC. MegaZine3 MZ3-Tool3. Server Upload. Video 2-4

Konfiguration von Igel ThinClients fu r den Zugriff via Netscaler Gateway auf eine Storefront/ XenDesktop 7 Umgebung

Avira Management Console Optimierung für großes Netzwerk. Kurzanleitung

Entwicklungsumgebungen. Packer, Vagrant, Puppet. Alexander Pacnik Mannheim,

Reporting Services und SharePoint 2010 Teil 1

OS IDE Webserver Integration des Webservers in die IDE Wireshark Webserver II Dynamisches Webprojekt in Eclipse

ISA Server Best Practice Analyzer

Installation der SAS Foundation Software auf Windows

Parallels Mac Management 3.5

Fragen zur GridVis MSSQL-Server

How-to: Webserver NAT. Securepoint Security System Version 2007nx

THEMA: "SAS STORED PROCESSES - SCHNELL GEZAUBERT" HELENE SCHMITZ

MSSQL Server Fragen GridVis

mywms Vorlage Seite 1/5 mywms Datenhaltung von Haug Bürger

Spring Dynamic Modules for OSGi Service Platforms

TimeMachine. Time CGI. Version 1.5. Stand Dokument: time.odt. Berger EDV Service Tulbeckstr München

IBM SPSS Modeler Entity Analytics - Erweiterte Konfiguration

Installationsanleitung dateiagent Pro

Java Server Faces. Andy Bosch. Das Standard-Framework zum Aufbau webbasierter Anwendungen. An imprint of Pearson Education

BitDefender Client Security Kurzanleitung

Workshop für ZGV-Mitglieder zum Thema Software as a Service bzw. SOFLEX Software flexibel mieten

Installationsanleitung für pcvisit Server (pcvisit 15.0)

Anwenderdokumentation PersoSim

E-Learning-Content. E-Learning-Content wird von vielen Hochschullehrern in unterschiedlichstem Umfeld hergestellt

MetaQuotes Empfehlungen zum Gebrauch von

Formular»Fragenkatalog BIM-Server«

A1 Desktop Security Installationshilfe. Symantec Endpoint Protection 12.1 für Windows/Mac

Administrator Handbuch

Installations- und Kurzanleitung

Installations Guide für YAJSW und DTLDAP

ecaros-update 8.2 Update 8.2 procar informatik AG 1 Stand: DP 02/2014 Eschenweg Weiterstadt

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015

Eine Anwendung mit InstantRails 1.7

Verwendung des Terminalservers der MUG

Step by Step Webserver unter Windows Server von Christian Bartl

Installation / Aktualisierung von Druckertreibern unter Windows 7

Um zu prüfen welche Version auf dem betroffenen Client enthalten ist, gehen Sie bitte wie folgt vor:

Continuous Delivery in der Praxis

Deployment Deployment Seite 1 / 25

Installation von horizont 4 bei Verwendung mehrerer Datenbanken

IBM SPSS Statistics Version 22. Installationsanweisungen für Mac OS (Lizenz für gleichzeitig angemeldete Benutzer)

Anbindung von Thunderbird an (mit Kalender und Kontakten) Besuchen Sie uns im Internet unter

Anleitung zur Installation der DataWatch Software auf einem LINUX System ohne grafische Oberfläche

KURZANLEITUNG CYBERDUCK MIT CLOUD OBJECT STORAGE

Benutzerhandbuch. Leitfaden zur Benutzung der Anwendung für sicheren Dateitransfer.

Übung 8: Semaphore in Java (eigene Implementierung)

Ora Education GmbH. Lehrgang: Oracle Application Server 10g R3: Administration

Automatische Installation (wenn das SSO-Applet nicht vorhanden ist)! Abbildung 1:Auswahldialog für Installationslaufwerk

1. Voraussetzungen S Installation des OpenVPN Clients S OpenVPN Client installieren S Entpacken des Zip Ordners S.

Universal Dashboard auf ewon Alarmübersicht auf ewon eigener HTML Seite.

ADNP/9200 mit E2U/ESL1: Web Interface Beispiele

Oracle GridControl Tuning Pack. best Open Systems Day April Unterföhring. Marco Kühn best Systeme GmbH

Anleitung zum erstellen einer PDF-Datei aus Microsoft Word

Firewalls für Lexware Info Service konfigurieren

GDPdU Export. Modulbeschreibung. GDPdU Export. Software-Lösungen. Stand: Seite 1

Citrix-Freigabe Sage Office Line Evolution 2012

Kurzanleitung zu. von Daniel Jettka

mysoftfolio360 Handbuch

Kurzanleitung zur Softwareverteilung von BitDefender Produkten...2

Upgrade auf die Standalone Editionen von Acronis Backup & Recovery 10. Technische Informationen (White Paper)

SRH - Kurzinformation

Transkript:

Docker für Entwickler Dr. Roland Huß, ConSol* Software GmbH Seamless DevOps Day, 16. April 2015

Agenda Docker Crash Intro Docker für Java Entwickler Integrationstests Anwendungs-Paketierung docker-maven-plugin Demo

Roland Huß ro14nd @ Java Entwickler @ ConSol* Open Source www.jolokia.org labs.consol.de https://github.com/rhuss Konferenzen JavaZone 2014 W-JAX 2014 Devoxx 2014 JavaLand 2015

Docker Docker ist eine offene Plattform für Entwickler und Administratoren, um verteilte Applikationen zu bauen, auszuliefern und zu betreiben. docker.io

Container versus VM Container sind isoliert, teilen sich aber den Kernel und (einige) Dateien schneller und sparsamer

Image read-only Dateisystem Schicht kann installiert und verteilt werden "Blaupause für einen Container"

Container read-write Schicht Copy-On-Write kann gestartet und gestoppt werden "Instanz eines Images"

Docker CLI Kommandos ps images run search pull rm rmi exec Anzeigen erzeugter Container Anzeigen lokaler Images Erzeugen und Starten von Containern Suchen von Images in einer Registry Download von Images Entfernen eines Containers Entfernen eines Images Ausführen eines Kommandos im Container

Erweiterte Konzepte Port Mapping Container Ports können flexibel exportiert werden Container Linking Netzwerkverknüpfung zwischen lokalen Containern Volumes Mounten lokaler Verzeichnisse Mounten von Verzeichnissen zwischen Containern Eigene Images Skriptbar via Dockerfiles

Demo

Docker für Java Entwickler? Integrationstests Applikations Deployment

Integrationstests Integrationstests prüfen Applikationen in einem realistischen Kontext, der der Produktionsumgebung so nahe wie möglich kommt.

Integrationstests Gute Integrationstests sind Robust (aka wiederholbar) Laufen entweder immer durch oder schlagen immer mit dem gleichen Tests fehl Autark Minimale externe Abhängigkeiten, eigenständig Isoliert Parallele Ausführung ähnlicher Tests Schnell Kurze Turnaround-Zeiten

Externe Testsysteme Robust Autark Isoliert Schnell Test Systeme werden extern verwaltet und konfiguriert. Test Systeme müssen installiert werden und verfügbar sein. Parallele Tests greifen auf das gleiche System zu und stören sich gegenseitig. Test Systeme sind aufgrund paralleler Nutzung und Netzwerklatenz oft langsam. aber sind nahe an der Realität!

Simuliertes (Mock) Testsystem Robust Autark Isoliert Schnell Kann während des Testlaufs gestartet werden. Kann deklarativ konfiguriert werden (z.b. Citrus). Verschiedene Ports pro Testlauf können konfiguriert werden. Mock Systeme sind aufgrund begrenzter Funktionalität oft schneller. aber entsprechen nicht der Wirklichkeit!

Integrationstests mit Docker Robust Autark Isoliert Schnell Jeder Testlauf hat einen eigenen Container und Ausführungskontext. Außer einer Docker Installation keine externen Abhängigkeiten. Perfekte Isolation der Container möglich. Schneller Container Start dank der Systemlevel Virtualisierung. und können die Realität abbilden!

Applikations Deployment Standard "Container" Formate für Java Enterprise Anwendungen: Web-Archive (WAR) Enterprise-Archive (EAR) Mit Docker wird der Ausführungskontext (Server) mit in den Container gepackt. Immutable Server Pattern Bei einer neuen Version der Applikation wird auch ein neuer Server deployed.

Docker Delivery Pipeline Source Repository Docker Registry Entwicklung Bauen + Unit Test Integration Test Performance Test Akzeptanz Test Produktion

Container Patterns Datencontainer: Artefakte werden in einen Datencontainer verpackt. Der Datencontainer wird mit einem Plattformcontainer verknüpft. Die Applikation wird beim Start des Plattformcontainers deployed. Servicecontainer: Artefakte und Laufzeitumgebung (z.b. Applikationsserver) werden in den gleichen Container gepackt. Ideal für Microservices.

Build Integration CI Server Pre- und Post-Hooks zum Starten und Stoppen von Docker Container. Aufruf der Docker CLI aus dem Build heraus: exec Ant-Task exec-maven-plugin für Maven mit Groovy aus Gradle heraus Dedizierte Maven und Gradle Plugins

docker-maven-plugin WTF or FTW?

Die 4 Überlebenden wouterd/docker-maven-plugin Wouter Danes, ING alexec/docker-maven-plugin Alex Collins spotify/docker-maven-plugin Spotify rhuss/docker-maven-plugin Roland Huß, ConSol https://github.com/rhuss/shootout-docker-maven

docker-maven-plugin wouterd alexec spotify rhuss API jaxrs docker-java spotify/dockerclient Apache HC Start/Stop Build/Push Image Dockerfile + Maven Config Dockerfile + custom YML Page Nr. Maven config + Dockerfile Maven config + Assembly + (Dockerfile)

docker-maven-plugin wouterd alexec spotify rhuss Logs Security Plain Plain Encrypted/ Plain URL Wait 36 57 73 90 Size LOC 2300 1600 600 4200

rhuss/docker-maven-plugin Einfache Konfiguration Dynamisches Portmapping Assembly, um Artefakte und deren Abhängigkeiten in den Container einzubinden Upload von Containern zu einer Registry Automatischer Download von Images "Doing it the Maven way"

Maven Goals docker:start docker:stop docker:build docker:push Starten von Containern Stoppen von Containern Bauen von Images Upload zu einer Registry docker:remove Entfernen von Images docker:logs Anzeigen der Container Logs

Beispiel Konfiguration <images> <image> <name>jolokia/jolokia-itest</name> <build> <from>consol/tomcat-7.0</from> <assemblydescriptor>assembly.xml</assemblydescriptor> </build> <run> <ports> <port>jolokia.port:8080</port> </ports> </run> </image> </images>

Assembly Deskriptor <assembly> <dependencysets> <dependencyset> <includes> <include>org.jolokia:jolokia-war</include> </includes> <outputdirectory>.</outputdirectory> <outputfilenamemapping>jolokia.war</outputfilenamemapping> </dependencyset> </dependencysets> </assembly>

Artefakte im Container Assembly Deskriptor des maven-assemblyplugin Build Artefakte Abhängigkeiten Beliebige Dateien Vordefinierte Deskriptoren Daten stehen im Container unter /maven zur Verfügung.

Beispiel Projekt Docker Demo Projekt Vanilla PostgreSQL 9 Image HTTP Request Logging Service MicroService mit embedded Tomcat DB Schema wird via Flyway während des Starts gebaut PostgreSQL Container wird über Link angebunden Einfacher Integrationstest, der den Service nutzt REST-assured zum Testen des Service Aufrufes Aufruf: mvn clean install https://github.com/rhuss/docker-maven-sample

Demo

Zusammenfassung Docker ist eine leichtgewichtige Virtualisierungstechnik, mit der man: robuste, autarke, isolierte und schnelle Integrationstests entwickeln kann. ein neues Paradigma für die Auslieferung von Applikationen umsetzen kann. Ein komfortabler Weg, Docker in den Java Build Prozess zu integrieren, ist die Verwendung eines docker-maven-plugins.

Referenzen index.docker.io - Public Docker Registry Entwickler Magazin Spezial Vol.2: Docker http://entwickler.de/docker_spezial "The Docker Book" sehr zu empfehlen! http://www.dockerbook.com/

Danke! docker_nuke() { docker ps -q xargs docker stop docker ps -q -a xargs docker rm } docker_rmi_none() { docker images grep '<none>' \ awk '{ print $3 }' \ xargs docker rmi } docker_go() { docker run --rm -t -i $@ }

ConSol* Software GmbH Franziskanerstraße 38 D-81669 München Tel: +49-89-45841-100 Fax: +49-89-45841-111 info@consol.de www.consol.de