Continuous Delivery mit Docker



Ähnliche Dokumente
Continuous Delivery in der Praxis

Continuous Delivery in der Praxis

The linux container engine. Peter Daum

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

CentOS 7 Secure And Portable Containers Made Easy Jürgen Brunk Köln,

docker.io Secure And Portable Containers Made Easy Jürgen Brunk München,

Build-Pipeline mit Jenkins

Erfolgreicher Ums9eg auf Git

Deployment Deployment Seite 1 / 25

Bewertung der Methoden zur Sicherung von virtuellen Maschinen (VMware, Hyper-V) Ein Erfahrungsbericht

Brownbag Session Grundlagen Virtualisierung Von VM s und Containern

Agenda. Ziel Problematik OS-Installation Softwareverteilung Inventarisierung Stufenplan

Praktikum Ingenieurinformatik (PI)

AGILE APPLICATION LIFECYCLE MANAGEMENT IM ATLASSIAN ECOSYSTEM

IT Engineering Continuous Delivery. Development Tool Chain Virtualisierung, Packer, Vagrant und Puppet. Alexander Pacnik Karlsruhe,

JEAF Cloud Plattform Der Workspace aus der Cloud

Windows Server 2008 (R2): Anwendungsplattform

RESTful Web. Representational State Transfer

Calogero Fontana Fachseminar WS09/10. Virtualisierung

Die Projek*ools. Files, Git, Tickets & Time

Docker. Lass mal containern Julian mino GPN

Spontan testen! Das eigene Test Lab, für jeden in der Cloud! Peter Kirchner. Microsoft Deutschland GmbH

Git in großen Projekten

Citrix Dazzle. Die Zukunft der XenApp Bereitstellung? Thomas Kötzing - Freiberufler, Analyst Microsoft MVP, Citrix CTP / ThomasKoetzing.

Virtual Desktop Infrasstructure - VDI

Formular»Fragenkatalog BIM-Server«

2008 Linke, Walter IAV4 1

Einführung Git Interna Workflows Referenzen. Git. Fast Version Control System. Michael Kuhn

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

Virtualisierung Linux-Kurs der Unix-AG

Consultant & Geschäftsführer, enpit consulting OHG ugb@enpit.de

SAP NetWeaver Gateway. 2013

Continuous Integration im medizinischen Bereich

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

Continuous Integration mit Jenkins

Powermanager Server- Client- Installation

Serverprovisioning in einer dynamischen Infrastruktur Systemmanagement LinuxTag 2012

Containisierung von Java Apps mit Docker

OERA OpenEdge Reference Architecture. Mike Fechner PUG Infotag 19. Mai 05 Frankfurt

Anleitung Redmine. Inhalt. Seite 1 von 11. Anleitung Redmine

Vorstellung Studienprojekt. Policy4TOSCA. Umsetzung eines Policy-Frameworks für sicheres und energieeffizientes Cloud Computing

Dynamische Änderung von Ressourcen in OpenStack

Continuous Delivery in der Realität eines Großunternehmens

Konfigurationsmanadment mit Chef und Vagrant. August 2012, Seite: 1/20

Benutzer und Rechte Teil 1

KASPERSKY SECURITY FOR VIRTUALIZATION 2015

Java Enterprise Architekturen Willkommen in der Realität

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

Platform as a Service (PaaS) & Containerization

Kurzanleitung zur Softwareverteilung von BitDefender Produkten...2

Torsten Flatter inovex GmbH. "Git.NET" gibt's nicht?

Workshop: Eigenes Image ohne VMware-Programme erstellen

Erläuterung des technischen Hintergrundes des neues RIWA GIS-Zentrums

Linux im Studium. Serbest Hammade / Resh, Christian Sturm. Do, 15. November 2012

Internet Explorer Version 6

MailUtilities: Remote Deployment - Einführung

Einreichung zum Call for Papers

Betriebshandbuch. MyInTouch Import Tool

Release Automation für Siebel

Apollo Überblick. Klaus Kurz. Manager Business Development Adobe Systems Incorporated. All Rights Reserved.

AS/point, Ihr Partner die nächsten 10 und mehr Jahre -

Anleitung zum Arbeiten mit Microsoft Visual Studio 2008 im Softwarepraktikum ET/IT

Anleitung Redmine. Inhalt. Seite 1 von 11. Anleitung Redmine

Fernwartung von Mac OS 9 u. X per VNC

Update / Inbetriebnahme domovea Server. Update/Inbetriebnahme domovea Server Technische Änderungen vorbehalten

Versionsverwaltung mit SVN

Installationsanleitung. Ab Version

DocuWare unter Windows 7

Sind Cloud Apps der nächste Hype?

VPN CISCO ANYCONNECT

Intergraph Geospatial 2014 Download, Installation und Lizenzierung

Installation der SAS Foundation Software auf Windows

Diplomarbeit: GOMMA: Eine Plattform zur flexiblen Verwaltung und Analyse von Ontologie Mappings in der Bio-/Medizininformatik

ecaros2 Installer procar informatik AG 1 Stand: FS 09/2012 Eschenweg Weiterstadt

Software-Engineering Grundlagen des Software-Engineering 7.3 Sourcecode-Verwaltung mit Versionsmanagement-Systemen Einführung in Subversion (SVN)

VMware vsphere Client

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

DevOps bei den ID Build-Automatisierung statt Silo-Betrieb

Installation von NetBeans inkl. Glassfish Anwendungs-Server

Installationsleitfaden für Secure Private Network für Linux ClearPath- Netzwerke

vsphere vs. HyperV ein Vergleich aus Sicht eines VMware Partners interface:systems

Smartphone Entwicklung mit Android und Java

Avira Professional Security/ Avira Server Security Version 2014 Release-Informationen

Kernel Based Virtual Machine

Installationsanleitung für pcvisit Server (pcvisit 12.0)

Hybride Cloud-Infrastrukturen Bereitstellung & Verwaltung mit System Center 2012

Eclipse Equinox als Basis für Smart Client Anwendungen. Christian Campo, compeople AG, Java Forum Stuttgart 2007

Verteilte Versionskontrolle mit GIT Dortmund Ansgar Brauner - GreenPocket GmbH - Köln

Tanuki Service Wrapper 101. JVM Verwaltung mit der Community Edition. Alexander Pacnik Karlsruhe,

Anwenderdokumentation PersoSim

Anwendungsvirtualisierung in Containern mit Docker

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

Vorstellung - "Personal Remote Desktop" für (fast) alle Hardwareplattformen und Betriebssysteme

Transkript:

Continuous Delivery mit Docker Berlin Expert Days 2014 Dr. Halil-Cem Gürsoy adesso AG 04.04.14

http://www.flickr.com/photos/jpmartineau/501718334/

Definition und Provisionierung eines Linux-Containers

Container vs. VM Container sind keine VMs! LXC LinuX Containers > chroot & cgroups Container > Linux System läuft innerhalb eines Linux-Systems > Gruppe von Prozessen in einer isolierten Umgebung > Innerhalb der Containers wie in einer VM > Außerhalb des Containers nur ein normaler Prozess > Netzwerk, Ressourcen usw. vollständig isoliert Kaum Footprint

Container vs. VMs Starte VM: schnell. Starte Container: sehr schnell. Wirklich sehr sehr schnell!

Docker - Installation Kernel sharing!= Windows > Unterstützt werden Linux (>= 3.8 Kernel, Ubuntu bevorzugt) > OSX (Client, boot2docker) Diverse IaaS-Platformen > Amazon EC2 > Google CE > OpenStack Mit Vagrant > Provisioner Docker Chef, Puppet

Docker internals Filesystem > AUFS Another union file system > Spezialisiert auf die Anforderungen von Docker > Inzwischen auch Unterstützung für andere Filesysteme > Git-Like Befehle um mit Index/Repository zu kommunizieren cgroup > Kapselung von Gruppen von Prozessen > Isolierung von Ressourcen Docker ist nur ein Interface zu LXC

Docker basics Container > Laufzeit > Wird aus einem Image gestartet Image > Ein Template um einen Container zu starten > Images werden in einem Repository verwaltet > Lokal oder auf einem Server Image bauen > Interaktiv > Dockerfile > Packer

Eigene Images docker pull ubuntu docker images docker run ubuntu i t /bin/bash root@8c13505e2526:/# [ ] root@8c13505e2526:/# exit docker commit 8c13505e2526 my-ubuntu:1.0 docker push someserver:5000/my-ubuntu:1.0

Docker basics - Dockerfile FROM ubuntu:precise MAINTAINER Halil-Cem Guersoy hcguersoy@gmail.com RUN apt-get install -y wget docker build t ubuntu-wget. docker inspect ubuntu-wget docker push somereposerver:5000/ubuntu-wget docker run i t ubuntu-wget /bin/bash docker ps -a

Dockerfile für App-Deploymen? Lowlevel, vergleichbar mit Kickstart Distro-Spezifisch Besser: echte Provisionierungstools > Chef > Puppet Packer > Docker Support noch in Entwicklung > Langfristig richtiger Ansatz zur Integration > Vagrant-Like

Puppet-Integration Dockerfile...oder mit Packer ADD./ /puppetwrk RUN puppet apply -v --modulepath=/puppetwrk/modules/ /puppetwrk/manifests/nagios.pp Image wird mit Hilfe von Puppet provisioniert Komplexe Images möglich Application Deployment

Docker für App-Container Java Tomcat Web Application www.flickr.com/photos/matijagrguric/4437187539/

Docker für App-Container

Docker in Continuous Delivery Images zur Softwareverteilung > Basis-Images mit z.b. Application Server oder Datenbank-Installation > App Images enthalten nur die Änderungen gegenüber den Basis-Images > z.b. Artefakte und Konfiguration Nur 1x deployen, konfigurieren usw. 3588c05c7d24 Virtual Size: 510.5 MB Tags: cdwrkshp/java7-tc7:latest 7cd0471cb71e Virtual Size: 510.5 MB 54dc3c2d593c Virtual Size: 517 MB 094cc7c59c79 Virtual Size: 523.1 MB 688a08b73f44 Virtual Size: 523.1 MB 52e46ca36cf0 Virtual Size: 523.1 MB Tags: angularjs-springmvc:1.1.0-42 7cc63bc98af7 Virtual Size: 517 MB 8bf219561a14 Virtual Size: 523.1 MB ebe7ec7d34bb Virtual Size: 523.1 MB 23205cc10892 Virtual Size: 523.1 MB Tags: angularjs-springmvc:1.1.0-41 d420a23f980b Virtual Size: 517 MB 4afb0caceae6 Virtual Size: 523.1 MB aed914cc5e2c Virtual Size: 523.1 MB d17e5a80a367 Virtual Size: 523.1 MB Tags: angularjs-springmvc:1.1.0-40

Warum Images / Container? Self containing Unabhängig von der Umgebung > Ein Image für alle Stages > Entwicklerfreundlich > OPS-Freundlich Dev kümmert sich um das Innenleben Ops kümmert sich im die Anschlüsse Nur abhängig von Architektur > 64/32 bit www.flickr.com/photos/imaphotog/205492402/

Images Zentrales Repository > pull/push Export / Import > Archiv-Datei Ein Artefakt wie jedes andere! https://www.flickr.com/photos/10216416@n00/3684144447/

Docker und CI/CD-Tools Jenkins

Jenkins Jenkins mit Docker Shell > Shell Glue code zur Interaktion mit lokalem oder remote Docker Jenkins Parametrizied Build Plugin > Durchreichen von notwendigen Informationen > Git / SVN Revision > Image ID > Container ID > Port-Mapping Docker Executor Plugin

Jenkins Skalieren Docker Container als Jenkins Slaves Docker Cloud Plugin > Docker Container starten > Jenkins Slave in Docker Container starten Skalierung Start Build - Destroy Warum? > Saubere Trennung der Build-Prozesse > Buildspezifische Images > Skalierung

04.04.14 MongoDB Schulung - Replikation und Sharding http://www.flickr.com/photos/schwaber/3238977103/

Andere Ci/CD-Tools Atlassian Bamboo > Diverse Dockerfiles für Installation > https://bitbucket.org/atlassianlabs/atlassian-docker JetBrains TeamCity > Diverse Plugins zur Build-Ausführung in Containern > TeamCity.Virtual Plugin https://github.com/jonnyzzz/teamcity.virtual drone.io > Build-System > Basiert vollständig auf Docker > https://github.com/drone/drone / http://drone.io

Docker for real life Docker bietet eine Remote API > Ist fast RESTfull > Starten / Stoppen usw. usw. > Öffnet Möglichkeit zur Verwaltung von zentralen Docker-Hosts CoreOS > Orchestrierung von Docker-Instanzen / Clusteraufbau Shipyard > UI zur Verwaltung von Docker-Hosts > REST API einfacher als Docker Remote API DockerUI > Recht einfache GUI

Warum eigentlich das ganze?

04.04.14 Continuous Delivery praktisch http://www.flickr.com/photos/an_untrained_eye/6630719431/

Vielen Dank für Ihre Aufmerksamkeit. Kontakt: halil-cem.guersoy[at]adesso.de Twitter: @hgutwit G+ https://plus.google.com/+halilcemgürsoy www.adesso.de info@adesso.de