Docker – Automatisches Deployment 
für Linux-Instanzen 
CommitterConf Essen 2014 28. Oktober 2014 
Christian Rost 
Linux C...
Vorstellung B1 Systems 
gegründet 2004 
primär Linux/Open Source-Themen 
national & international tätig 
über 60 Mitarbeit...
Schwerpunkte 
Virtualisierung (XEN, KVM & RHEV) 
Systemmanagement (Spacewalk, Red Hat Satellite, SUSE 
Manager) 
Konfigura...
Partner 
B1 Systems GmbH 
Docker – Automatisches Deployment für 
Linux-Instanzen 4 / 37
Docker – 
Build, Ship and Run Applications 
B1 Systems GmbH 
Docker – Automatisches Deployment für 
Linux-Instanzen 5 / 37
Kurze Frage vorweg: 
Wer kennt Docker? 
Wieviele haben Docker ausprobiert? 
Setzt jemand Docker produktiv ein? 
B1 Systems...
Was ist Docker? 
Open Source Engine zum Standardisieren von Linux Containern 
(libcontainer) 
„build, ship and run (distri...
Eigenschaften 
Docker ermöglicht ein automatisches Deployment einer 
standardisierten Prozessumgebung für Linux-Anwendunge...
Warum Docker? 
B1 Systems GmbH 
Docker – Automatisches Deployment für 
Linux-Instanzen 9 / 37
Darum Docker! 
B1 Systems GmbH 
Docker – Automatisches Deployment für 
Linux-Instanzen 10 / 37
Einsatzbereiche 
einfaches Deployment auch verteilter Anwendungen: 
Evaluationssysteme 
POC-Systeme 
schnelles Bereitstell...
VMs vs. Container 
VMs komplette Maschine einschl. Kernel wird mit Hilfe eines 
Hypervisors virtualisiert. 
Container nur ...
Technologien hinter Docker 1/2 
chroot on steroids 
Go Programming Language 
Linux Kernel Feature 
Namespaces 
Control gro...
Technologien hinter Docker 2/2 
Containerformat 
libcontainer 
LXC 
. . . 
B1 Systems GmbH 
Docker – Automatisches Deploym...
Docker – 
das Ökosystem 
B1 Systems GmbH 
Docker – Automatisches Deployment für 
Linux-Instanzen 15 / 37
Docker Engine 
Die Docker Engine besteht aus zwei Teilen: 
Server Daemon für den Serverprozess zur Verwaltung der 
Contain...
Inside Docker 
Docker Images 
read only Template 
Basis für Container 
Docker Registries 
halten Images 
privat und öffent...
Docker – Client-Befehle (Auszug) 
attach in laufenden Container hängen 
build Container aus Docker-File bauen 
commit neue...
Docker – Container (Beispiele) 
Download des „offiziellen“ openSUSE-Containers: 
$ docker pull opensuse:13.1 
Programm inn...
Dockerfile 
Bauanleitung für ein Image 
enthält die notwendigen Anweisungen Erstellen eines Image 
stellt so die Reproduzi...
Dockerfile – Beispiel 
Dockerfile für MySQL (Beispiel): 
FROM opensuse:13.1 
MAINTAINER Tux <info@b1-systems.de> 
RUN zypp...
Der Docker-Kosmos 
Docker ist kollaborativ, modular und erweiterbar: 
Atomic/CoreOS spezialisierte Linux-Distributionen zu...
Docker Orchestration – Fig 
Orchestration Tool für Docker 
erlaubt das gemeinsame Deployment mehrerer Container 
(Multi-Co...
Docker – 
Live Demo 
B1 Systems GmbH 
Docker – Automatisches Deployment für 
Linux-Instanzen 24 / 37
Docker – Live Demo 
Installation 
Container starten 
Handling von Docker 
Verknüpfung von Containern mit Fig 
. . . 
B1 Sy...
Docker – Installation openSUSE 13.1 (1/2) 
Repository einrichten: 
$ sudo zypper ar -f 
http://download.opensuse.org/repos...
Docker – Installation openSUSE 13.1 (2/2) 
Benutzerrechte durch Gruppenmitgliedschaft: 
$ sudo /usr/sbin/usermod -a -G doc...
Demo 
B1 Systems GmbH 
Docker – Automatisches Deployment für 
Linux-Instanzen 28 / 37
Fig – Beispiel 
Automatisches Starten einer WordPress-Instanz 
Webserver und Datenbank getrennt 
Wordpress über Port 80 er...
Fig – WordPress 
Erstellen der Wordpress Instanz: 
$ wget http://wordpress.org/wordpress-3.8.1.tar.gz && tar 
xvfzp wordpr...
Fig – YAML-Datei 
fig.yml: 
web: 
build: . 
command: php -S 0.0.0.0:80 -t /code 
ports: 
- "80:80" 
links: 
- db 
volumes:...
Fig – WordPress 
wp-config.php – Teil I 
<?php 
define(’DB_NAME’, ’wordpress’); 
define(’DB_USER’, ’root’); 
define(’DB_PA...
Fig – WordPress 
wp-config.php – Teil II 
define(’LOGGED_IN_SALT’, ’b1-systems-docker-demo’); 
define(’NONCE_SALT’, ’b1-sy...
Fig – WordPress 
Fig die Arbeit machen lassen :) 
$ fig up 
$ fig ps 
curl <IP> 
B1 Systems GmbH 
Docker – Automatisches D...
Demo 
B1 Systems GmbH 
Docker – Automatisches Deployment für 
Linux-Instanzen 35 / 37
Links und Quellen 
Homepage des Docker-Projekts http://www.docker.com/ 
Homepage von Fig http://www.fig.sh/ 
Docker on Git...
Vielen Dank für Ihre Aufmerksamkeit! 
Bei weiteren Fragen wenden Sie sich bitte an info@b1-systems.de 
oder +49 (0)8457 - ...
Nächste SlideShare
Wird geladen in …5
×

Docker - Automatisches Deployment für Linux-Instanzen

719 Aufrufe

Veröffentlicht am

Docker - Automatisches Deployment für Linux-Instanzen

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

Keine Downloads
Aufrufe
Aufrufe insgesamt
719
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
9
Aktionen
Geteilt
0
Downloads
15
Kommentare
0
Gefällt mir
1
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

Docker - Automatisches Deployment für Linux-Instanzen

  1. 1. Docker – Automatisches Deployment für Linux-Instanzen CommitterConf Essen 2014 28. Oktober 2014 Christian Rost Linux Consultant B1 Systems GmbH rost@b1-systems.de B1 Systems GmbH - Linux/Open Source Consulting, Training, Support & Development
  2. 2. Vorstellung B1 Systems gegründet 2004 primär Linux/Open Source-Themen national & international tätig über 60 Mitarbeiter unabhängig von Soft- und Hardware-Herstellern Leistungsangebot: Beratung & Consulting Support Entwicklung Training Betrieb Lösungen dezentrale Strukturen B1 Systems GmbH Docker – Automatisches Deployment für Linux-Instanzen 2 / 37
  3. 3. Schwerpunkte Virtualisierung (XEN, KVM & RHEV) Systemmanagement (Spacewalk, Red Hat Satellite, SUSE Manager) 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 Teams vor Ort B1 Systems GmbH Docker – Automatisches Deployment für Linux-Instanzen 3 / 37
  4. 4. Partner B1 Systems GmbH Docker – Automatisches Deployment für Linux-Instanzen 4 / 37
  5. 5. Docker – Build, Ship and Run Applications B1 Systems GmbH Docker – Automatisches Deployment für Linux-Instanzen 5 / 37
  6. 6. Kurze Frage vorweg: Wer kennt Docker? Wieviele haben Docker ausprobiert? Setzt jemand Docker produktiv ein? B1 Systems GmbH Docker – Automatisches Deployment für Linux-Instanzen 6 / 37
  7. 7. Was ist Docker? Open Source Engine zum Standardisieren von Linux Containern (libcontainer) „build, ship and run (distributed) applications“ offene Plattform für Entwickler und Systemadministratoren einfaches Erstellen und Teilen von Container Images Docker ist kein virtueller Server ! ) wenig Overhead B1 Systems GmbH Docker – Automatisches Deployment für Linux-Instanzen 7 / 37
  8. 8. Eigenschaften Docker ermöglicht ein automatisches Deployment einer standardisierten 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 des Containers: Bibliotheken Abhängigkeiten Binärdateien . . . Container sind auf die Architektur der Host-Plattform beschränkt. B1 Systems GmbH Docker – Automatisches Deployment für Linux-Instanzen 8 / 37
  9. 9. Warum Docker? B1 Systems GmbH Docker – Automatisches Deployment für Linux-Instanzen 9 / 37
  10. 10. Darum Docker! B1 Systems GmbH Docker – Automatisches Deployment für Linux-Instanzen 10 / 37
  11. 11. Einsatzbereiche einfaches Deployment auch verteilter Anwendungen: Evaluationssysteme POC-Systeme schnelles Bereitstellen reproduzierbarer (Laufzeit-)Umgebungen: für Entwickler in Test-/QA-/Live-Umgebungen Konfigurationstests Kapselung kritischer Dienste in eigenen Containern ) erhöhte Ausfallsicherheit . . . B1 Systems GmbH Docker – Automatisches Deployment für Linux-Instanzen 11 / 37
  12. 12. VMs vs. Container VMs komplette Maschine einschl. Kernel wird mit Hilfe eines Hypervisors virtualisiert. Container nur Prozesse werden virtualisiert, das OS und Binaries/Libraries gemeinsam genutzt. B1 Systems GmbH Docker – Automatisches Deployment für Linux-Instanzen 12 / 37
  13. 13. Technologien hinter Docker 1/2 chroot on steroids Go Programming Language Linux Kernel Feature Namespaces Control groups (cgroups) SELinux capabilities netlink netfilter . . . Union file system/AuFS B1 Systems GmbH Docker – Automatisches Deployment für Linux-Instanzen 13 / 37
  14. 14. Technologien hinter Docker 2/2 Containerformat libcontainer LXC . . . B1 Systems GmbH Docker – Automatisches Deployment für Linux-Instanzen 14 / 37
  15. 15. Docker – das Ökosystem B1 Systems GmbH Docker – Automatisches Deployment für Linux-Instanzen 15 / 37
  16. 16. 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 GmbH Docker – Automatisches Deployment für Linux-Instanzen 16 / 37
  17. 17. Inside Docker Docker Images read only Template Basis für Container Docker Registries halten Images privat und öffentlich Docker Hub Docker Container wird auf Basis eines Images und Dockerfiles erzeugt hält Änderungen vor – read/write Layer kann zu einem neuen Image „committed“ werden B1 Systems GmbH Docker – Automatisches Deployment für Linux-Instanzen 17 / 37
  18. 18. Docker – Client-Befehle (Auszug) attach in laufenden Container hängen build Container aus Docker-File bauen commit neues Images aus den Änderungen eines bestehenden Containers erzeugen images Images auflisten kill Container beenden login am Docker Registry Server anmelden ps Container auflisten rm Container löschen run Kommando in einem neuen Container ausführen start beendeten Container starten stop gestarteten Container stoppen B1 Systems GmbH Docker – Automatisches Deployment für Linux-Instanzen 18 / 37
  19. 19. 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 GmbH Docker – Automatisches Deployment für Linux-Instanzen 19 / 37
  20. 20. Dockerfile Bauanleitung für ein Image enthält die notwendigen Anweisungen Erstellen eines Image stellt so die Reproduzierbarkeit eines Image bei jeder neuen Erstellung sicher Anweisungen sind einzeilig und beginnen mit einem Schlüsselwort. Anweisungen sind nicht case-sensitive. (Schlüsselwörter werden gewöhnlich groß geschrieben.) Kommentare werden durch ein #-Zeichen eingeleitet. B1 Systems GmbH Docker – Automatisches Deployment für Linux-Instanzen 20 / 37
  21. 21. Dockerfile – Beispiel Dockerfile für MySQL (Beispiel): FROM opensuse:13.1 MAINTAINER Tux <info@b1-systems.de> RUN zypper install -y mysql mysql-server ADD start.sh /start RUN chmod +x /start EXPOSE 3306 CMD ["/start"] B1 Systems GmbH Docker – Automatisches Deployment für Linux-Instanzen 21 / 37
  22. 22. Der Docker-Kosmos Docker ist kollaborativ, modular und erweiterbar: Atomic/CoreOS spezialisierte Linux-Distributionen zur Ausführung von Containern Gitlab Collaboration on Code Jenkins Continuous Integration System für Servlet Container (z.B. Apache Tomcat) Puppet Konfigurationsmanagement Fig Orchestration . . . B1 Systems GmbH Docker – Automatisches Deployment für Linux-Instanzen 22 / 37
  23. 23. Docker Orchestration – Fig Orchestration Tool für Docker erlaubt das gemeinsame Deployment mehrerer Container (Multi-Container Service) einfach in der Benutzung (Beispiel in der Live-Demo) B1 Systems GmbH Docker – Automatisches Deployment für Linux-Instanzen 23 / 37
  24. 24. Docker – Live Demo B1 Systems GmbH Docker – Automatisches Deployment für Linux-Instanzen 24 / 37
  25. 25. Docker – Live Demo Installation Container starten Handling von Docker Verknüpfung von Containern mit Fig . . . B1 Systems GmbH Docker – Automatisches Deployment für Linux-Instanzen 25 / 37
  26. 26. Docker – Installation openSUSE 13.1 (1/2) Repository einrichten: $ sudo zypper ar -f http://download.opensuse.org/repositories/Virtualization/ openSUSE_13.1/ Virtualization $ sudo rpm –import http://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 GmbH Docker – Automatisches Deployment für Linux-Instanzen 26 / 37
  27. 27. 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 -a Linux 9a90ca38ebcf 3.11.10-21-desktop #1 SMP PREEMPT Mon Jul 21 15:28:46 UTC 2014 (9a9565d) x86_64 x86_64 x86_64 GNU/Linux bash-4.2# B1 Systems GmbH Docker – Automatisches Deployment für Linux-Instanzen 27 / 37
  28. 28. Demo B1 Systems GmbH Docker – Automatisches Deployment für Linux-Instanzen 28 / 37
  29. 29. Fig – Beispiel Automatisches Starten einer WordPress-Instanz Webserver und Datenbank getrennt Wordpress über Port 80 erreichbar Datenbank mit Webserver verlinkt Horizontales Scaling der Webserver B1 Systems GmbH Docker – Automatisches Deployment für Linux-Instanzen 29 / 37
  30. 30. Fig – WordPress Erstellen der Wordpress Instanz: $ wget http://wordpress.org/wordpress-3.8.1.tar.gz && tar xvfzp wordpress-3.8.1.tar.gz $ cd wordpress Dockerfile FROM orchardup/php5 ADD . /code Quelle: http://www.fig.sh/wordpress.html B1 Systems GmbH Docker – Automatisches Deployment für Linux-Instanzen 30 / 37
  31. 31. Fig – YAML-Datei fig.yml: web: build: . command: php -S 0.0.0.0:80 -t /code ports: - "80:80" links: - db volumes: - .:/code db: image: orchardup/mysql environment: MYSQL_DATABASE: wordpress Quelle: http://www.fig.sh/wordpress.html B1 Systems GmbH Docker – Automatisches Deployment für Linux-Instanzen 31 / 37
  32. 32. Fig – WordPress wp-config.php – Teil I <?php define(’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 GmbH Docker – Automatisches Deployment für Linux-Instanzen 32 / 37
  33. 33. Fig – WordPress wp-config.php – Teil II define(’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 GmbH Docker – Automatisches Deployment für Linux-Instanzen 33 / 37
  34. 34. Fig – WordPress Fig die Arbeit machen lassen :) $ fig up $ fig ps curl <IP> B1 Systems GmbH Docker – Automatisches Deployment für Linux-Instanzen 34 / 37
  35. 35. Demo B1 Systems GmbH Docker – Automatisches Deployment für Linux-Instanzen 35 / 37
  36. 36. 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 GmbH Docker – Automatisches Deployment für Linux-Instanzen 36 / 37
  37. 37. Vielen Dank für Ihre Aufmerksamkeit! Bei weiteren Fragen wenden Sie sich bitte an info@b1-systems.de oder +49 (0)8457 - 931096 B1 Systems GmbH - Linux/Open Source Consulting, Training, Support & Development

×