Docker - Automatisches Deployment für Linux-Instanzen

741 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
741
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
9
Aktionen
Geteilt
0
Downloads
16
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

×