Top Banner
Docker – Automatisches Deployment für Linux-Instanzen CommitterConf Essen 2014 28. Oktober 2014 Christian Rost Linux Consultant B1 Systems GmbH [email protected] B1 Systems GmbH - Linux/Open Source Consulting, Training, Support & Development
37

Docker - Automatisches Deployment für Linux-Instanzen

Jul 14, 2015

Download

Technology

B1 Systems GmbH
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Docker - Automatisches Deployment für Linux-Instanzen

Docker – Automatisches Deploymentfür Linux-InstanzenCommitterConf Essen 2014 28. Oktober 2014

Christian RostLinux Consultant

B1 Systems [email protected]

B1 Systems GmbH - Linux/Open Source Consulting, Training, Support & Development

Page 2: Docker - Automatisches Deployment für Linux-Instanzen

Vorstellung B1 Systems

gegründet 2004primär Linux/Open Source-Themennational & international tätigüber 60 Mitarbeiterunabhängig von Soft- und Hardware-HerstellernLeistungsangebot:

Beratung & ConsultingSupportEntwicklungTrainingBetriebLösungen

dezentrale Strukturen

B1 Systems GmbHDocker – Automatisches Deployment für

Linux-Instanzen 2 / 37

Page 3: Docker - Automatisches Deployment für Linux-Instanzen

SchwerpunkteVirtualisierung (XEN, KVM & RHEV)Systemmanagement (Spacewalk, Red Hat Satellite, SUSEManager)Konfigurationsmanagement (Puppet & Chef)Monitoring (Nagios & Icinga)IaaS Cloud (OpenStack & SUSE Cloud & RDO)Hochverfügbarkeit (Pacemaker)Shared Storage (GPFS, OCFS2, DRBD & CEPH)Dateiaustausch (ownCloud)Paketierung (Open Build Service)Administratoren oder Entwickler zur Unterstützung des Teamsvor Ort

B1 Systems GmbHDocker – Automatisches Deployment für

Linux-Instanzen 3 / 37

Page 4: Docker - Automatisches Deployment für Linux-Instanzen

Partner

B1 Systems GmbHDocker – Automatisches Deployment für

Linux-Instanzen 4 / 37

Page 5: Docker - Automatisches Deployment für Linux-Instanzen

Docker –Build, Ship and Run Applications

B1 Systems GmbHDocker – Automatisches Deployment für

Linux-Instanzen 5 / 37

Page 6: Docker - Automatisches Deployment für Linux-Instanzen

Kurze Frage vorweg:

Wer kennt Docker?Wieviele haben Docker ausprobiert?Setzt jemand Docker produktiv ein?

B1 Systems GmbHDocker – Automatisches Deployment für

Linux-Instanzen 6 / 37

Page 7: Docker - Automatisches Deployment für Linux-Instanzen

Was ist Docker?

Open Source Engine zum Standardisieren von Linux Containern(libcontainer)„build, ship and run (distributed) applications“offene Plattform für Entwickler und Systemadministratoreneinfaches Erstellen und Teilen von Container ImagesDocker ist kein virtueller Server !⇒ wenig Overhead

B1 Systems GmbHDocker – Automatisches Deployment für

Linux-Instanzen 7 / 37

Page 8: Docker - Automatisches Deployment für Linux-Instanzen

Eigenschaften

Docker ermöglicht ein automatisches Deployment einerstandardisierten Prozessumgebung für Linux-Anwendungen.Alle Linux-Anwendungen laufen in Docker.(„ If it will run on Linux it will run in Docker.“)Docker läuft auf allen gängigen Linux-Distributionen.Alle benötigten Funktionen befinden sich innerhalb desContainers:

BibliothekenAbhängigkeitenBinärdateien. . .

Container sind auf die Architektur der Host-Plattformbeschränkt.

B1 Systems GmbHDocker – Automatisches Deployment für

Linux-Instanzen 8 / 37

Page 9: Docker - Automatisches Deployment für Linux-Instanzen

Warum Docker?

B1 Systems GmbHDocker – Automatisches Deployment für

Linux-Instanzen 9 / 37

Page 10: Docker - Automatisches Deployment für Linux-Instanzen

Darum Docker!

B1 Systems GmbHDocker – Automatisches Deployment für

Linux-Instanzen 10 / 37

Page 11: Docker - Automatisches Deployment für Linux-Instanzen

Einsatzbereiche

einfaches Deployment auch verteilter Anwendungen:EvaluationssystemePOC-Systeme

schnelles Bereitstellen reproduzierbarer (Laufzeit-)Umgebungen:für Entwicklerin Test-/QA-/Live-Umgebungen

KonfigurationstestsKapselung kritischer Dienste in eigenen Containern⇒ erhöhte Ausfallsicherheit. . .

B1 Systems GmbHDocker – Automatisches Deployment für

Linux-Instanzen 11 / 37

Page 12: Docker - Automatisches Deployment für Linux-Instanzen

VMs vs. Container

VMs komplette Maschine einschl. Kernel wird mit Hilfe einesHypervisors virtualisiert.

Container nur Prozesse werden virtualisiert, das OS undBinaries/Libraries gemeinsam genutzt.

B1 Systems GmbHDocker – Automatisches Deployment für

Linux-Instanzen 12 / 37

Page 13: Docker - Automatisches Deployment für Linux-Instanzen

Technologien hinter Docker 1/2

chroot on steroidsGo Programming LanguageLinux Kernel Feature

NamespacesControl groups (cgroups)SELinuxcapabilitiesnetlinknetfilter. . .

Union file system/AuFS

B1 Systems GmbHDocker – Automatisches Deployment für

Linux-Instanzen 13 / 37

Page 14: Docker - Automatisches Deployment für Linux-Instanzen

Technologien hinter Docker 2/2

ContainerformatlibcontainerLXC. . .

B1 Systems GmbHDocker – Automatisches Deployment für

Linux-Instanzen 14 / 37

Page 15: Docker - Automatisches Deployment für Linux-Instanzen

Docker –das Ökosystem

B1 Systems GmbHDocker – Automatisches Deployment für

Linux-Instanzen 15 / 37

Page 16: Docker - Automatisches Deployment für Linux-Instanzen

Docker Engine

Die Docker Engine besteht aus zwei Teilen:Server Daemon für den Serverprozess zur Verwaltung der

Container.Client Client zur Fernsteuerung des Daemons.

B1 Systems GmbHDocker – Automatisches Deployment für

Linux-Instanzen 16 / 37

Page 17: Docker - Automatisches Deployment für Linux-Instanzen

Inside Docker

Docker Imagesread only TemplateBasis für Container

Docker Registrieshalten Imagesprivat und öffentlichDocker Hub

Docker Containerwird auf Basis eines Images und Dockerfiles erzeugthält Änderungen vor – read/write Layerkann zu einem neuen Image „committed“ werden

B1 Systems GmbHDocker – Automatisches Deployment für

Linux-Instanzen 17 / 37

Page 18: Docker - Automatisches Deployment für Linux-Instanzen

Docker – Client-Befehle (Auszug)attach in laufenden Container hängenbuild Container aus Docker-File bauen

commit neues Images aus den Änderungen eines bestehendenContainers erzeugen

images Images auflistenkill Container beenden

login am Docker Registry Server anmeldenps Container auflistenrm Container löschen

run Kommando in einem neuen Container ausführenstart beendeten Container startenstop gestarteten Container stoppen

B1 Systems GmbHDocker – Automatisches Deployment für

Linux-Instanzen 18 / 37

Page 19: Docker - Automatisches Deployment für Linux-Instanzen

Docker – Container (Beispiele)

Download des „offiziellen“ openSUSE-Containers:$ docker pull opensuse:13.1

Programm innerhalb des Containers ausführen (allgemein):$ docker run opensuse:13.1 <command> <command params>

Programm innerhalb des Containers ausführen (Beispiel: Bash):$ docker run -t -i opensuse:13.1 /bin/bash

B1 Systems GmbHDocker – Automatisches Deployment für

Linux-Instanzen 19 / 37

Page 20: Docker - Automatisches Deployment für Linux-Instanzen

Dockerfile

Bauanleitung für ein Imageenthält die notwendigen Anweisungen Erstellen eines Imagestellt so die Reproduzierbarkeit eines Image bei jeder neuenErstellung sicherAnweisungen sind einzeilig und beginnen mit einemSchlüsselwort.Anweisungen sind nicht case-sensitive.(Schlüsselwörter werden gewöhnlich groß geschrieben.)Kommentare werden durch ein #-Zeichen eingeleitet.

B1 Systems GmbHDocker – Automatisches Deployment für

Linux-Instanzen 20 / 37

Page 21: Docker - Automatisches Deployment für Linux-Instanzen

Dockerfile – Beispiel

Dockerfile für MySQL (Beispiel):FROM opensuse:13.1MAINTAINER Tux <[email protected]>RUN zypper install -y mysql mysql-serverADD start.sh /startRUN chmod +x /startEXPOSE 3306CMD ["/start"]

B1 Systems GmbHDocker – Automatisches Deployment für

Linux-Instanzen 21 / 37

Page 22: Docker - Automatisches Deployment für Linux-Instanzen

Der Docker-Kosmos

Docker ist kollaborativ, modular und erweiterbar:Atomic/CoreOS spezialisierte Linux-Distributionen zur Ausführung

von ContainernGitlab Collaboration on Code

Jenkins Continuous Integration System für Servlet Container(z.B. Apache Tomcat)

Puppet KonfigurationsmanagementFig Orchestration

. . .

B1 Systems GmbHDocker – Automatisches Deployment für

Linux-Instanzen 22 / 37

Page 23: Docker - Automatisches Deployment für Linux-Instanzen

Docker Orchestration – Fig

Orchestration Tool für Dockererlaubt das gemeinsame Deployment mehrerer Container(Multi-Container Service)einfach in der Benutzung (Beispiel in der Live-Demo)

B1 Systems GmbHDocker – Automatisches Deployment für

Linux-Instanzen 23 / 37

Page 24: Docker - Automatisches Deployment für Linux-Instanzen

Docker –Live Demo

B1 Systems GmbHDocker – Automatisches Deployment für

Linux-Instanzen 24 / 37

Page 25: Docker - Automatisches Deployment für Linux-Instanzen

Docker – Live Demo

InstallationContainer startenHandling von DockerVerknüpfung von Containern mit Fig. . .

B1 Systems GmbHDocker – Automatisches Deployment für

Linux-Instanzen 25 / 37

Page 26: Docker - Automatisches Deployment für Linux-Instanzen

Docker – Installation openSUSE 13.1 (1/2)Repository einrichten:$ sudo zypper ar -fhttp://download.opensuse.org/repositories/Virtualization/openSUSE_13.1/ Virtualization$ sudo rpm –importhttp://download.opensuse.org/repositories/Virtualization/openSUSE_13.1/repodata/repomd.xml.key

Installation:$ sudo zypper in docker

Start des Daemons:$ sudo systemctl start docker$ sudo systemctl enable docker

B1 Systems GmbHDocker – Automatisches Deployment für

Linux-Instanzen 26 / 37

Page 27: Docker - Automatisches Deployment für Linux-Instanzen

Docker – Installation openSUSE 13.1 (2/2)

Benutzerrechte durch Gruppenmitgliedschaft:$ sudo /usr/sbin/usermod -a -G docker <benutzer>

Start eines Test-Containers:$ sudo docker run --rm -i -t opensuse /bin/bash

⇒ Bash des Test-Containers:bash-4.2# uname -aLinux 9a90ca38ebcf 3.11.10-21-desktop#1 SMP PREEMPT Mon Jul 21 15:28:46 UTC 2014 (9a9565d) x86_64x86_64 x86_64 GNU/Linuxbash-4.2#

B1 Systems GmbHDocker – Automatisches Deployment für

Linux-Instanzen 27 / 37

Page 28: Docker - Automatisches Deployment für Linux-Instanzen

Demo

B1 Systems GmbHDocker – Automatisches Deployment für

Linux-Instanzen 28 / 37

Page 29: Docker - Automatisches Deployment für Linux-Instanzen

Fig – Beispiel

Automatisches Starten einer WordPress-InstanzWebserver und Datenbank getrenntWordpress über Port 80 erreichbarDatenbank mit Webserver verlinktHorizontales Scaling der Webserver

B1 Systems GmbHDocker – Automatisches Deployment für

Linux-Instanzen 29 / 37

Page 30: Docker - Automatisches Deployment für Linux-Instanzen

Fig – WordPress

Erstellen der Wordpress Instanz:$ wget http://wordpress.org/wordpress-3.8.1.tar.gz && tarxvfzp wordpress-3.8.1.tar.gz $ cd wordpress

DockerfileFROM orchardup/php5ADD . /code

Quelle: http://www.fig.sh/wordpress.html

B1 Systems GmbHDocker – Automatisches Deployment für

Linux-Instanzen 30 / 37

Page 31: Docker - Automatisches Deployment für Linux-Instanzen

Fig – YAML-Dateifig.yml:web:build: .command: php -S 0.0.0.0:80 -t /codeports:- "80:80"links:- dbvolumes:- .:/codedb:image: orchardup/mysqlenvironment:MYSQL_DATABASE: wordpress

Quelle: http://www.fig.sh/wordpress.html

B1 Systems GmbHDocker – Automatisches Deployment für

Linux-Instanzen 31 / 37

Page 32: Docker - Automatisches Deployment für Linux-Instanzen

Fig – WordPresswp-config.php – Teil I<?phpdefine(’DB_NAME’, ’wordpress’);define(’DB_USER’, ’root’);define(’DB_PASSWORD’, ”);define(’DB_HOST’, "db:3306");define(’DB_CHARSET’, ’utf8’);define(’DB_COLLATE’, ”);define(’AUTH_KEY’, ’b1-systems-docker-demo’);define(’SECURE_AUTH_KEY’, ’b1-systems-docker-demo’);define(’LOGGED_IN_KEY’, ’b1-systems-docker-demo’);define(’NONCE_KEY’, ’b1-systems-docker-demo’);define(’AUTH_SALT’, ’b1-systems-docker-demo’);define(’SECURE_AUTH_SALT’, ’b1-systems-docker-demo’);

Quelle: http://www.fig.sh/wordpress.html

B1 Systems GmbHDocker – Automatisches Deployment für

Linux-Instanzen 32 / 37

Page 33: Docker - Automatisches Deployment für Linux-Instanzen

Fig – WordPress

wp-config.php – Teil IIdefine(’LOGGED_IN_SALT’, ’b1-systems-docker-demo’);define(’NONCE_SALT’, ’b1-systems-docker-demo’);$table_prefix = ’wp_’;define(’WPLANG’, ”);define(’WP_DEBUG’, false);if ( defined(’ABSPATH’) )define(’ABSPATH’, dirname(__FILE__) . ’’);require_once(ABSPATH . ’wpsettings.php’);

Quelle: http://www.fig.sh/wordpress.html

B1 Systems GmbHDocker – Automatisches Deployment für

Linux-Instanzen 33 / 37

Page 34: Docker - Automatisches Deployment für Linux-Instanzen

Fig – WordPress

Fig die Arbeit machen lassen :)$ fig up$ fig pscurl <IP>

B1 Systems GmbHDocker – Automatisches Deployment für

Linux-Instanzen 34 / 37

Page 35: Docker - Automatisches Deployment für Linux-Instanzen

Demo

B1 Systems GmbHDocker – Automatisches Deployment für

Linux-Instanzen 35 / 37

Page 36: Docker - Automatisches Deployment für Linux-Instanzen

Links und Quellen

Homepage des Docker-Projekts http://www.docker.com/

Homepage von Fig http://www.fig.sh/

Docker on GitHub https://github.com/docker/docker

Fig on Github https://github.com/docker/fig

B1 Systems GmbHDocker – Automatisches Deployment für

Linux-Instanzen 36 / 37

Page 37: Docker - Automatisches Deployment für Linux-Instanzen

Vielen Dank für Ihre Aufmerksamkeit!Bei weiteren Fragen wenden Sie sich bitte an [email protected]

oder +49 (0)8457 - 931096

B1 Systems GmbH - Linux/Open Source Consulting, Training, Support & Development