SlideShare uma empresa Scribd logo
1 de 47
Baixar para ler offline
Docker – Containervirtualisierung
leicht gemacht
CeBIT 2015 18. März 2015
Michel Rode
Linux/Unix Consultant & Trainer
B1 Systems GmbH
rode@b1-systems.de
B1 Systems GmbH - Linux/Open Source Consulting,Training, Support & Development
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 – Containervirtualisierung leicht
gemacht 2 / 47
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 – Containervirtualisierung leicht
gemacht 3 / 47
Docker –
Build, Ship and Run Applications
B1 Systems GmbH
Docker – Containervirtualisierung leicht
gemacht 4 / 47
Was ist Docker?
Open Source Engine zum Standardisieren von
Prozessumgebungen unter Linux
„build, ship and run (distributed) applications“
offene Plattform für Entwickler und Systemadministratoren
nutzt Container-Technologien (LXC/libcontainer)
einfaches Erstellen und Teilen von Container Images
Docker ist kein virtueller Server! (⇒ wenig Overhead)
„Docker“ bezeichnet sowohl den Server-Daemon als auch den
Client samt CLI
Open-Source-Projekt, veröffentlicht unter der Apache-2.0-Lizenz
B1 Systems GmbH
Docker – Containervirtualisierung leicht
gemacht 5 / 47
Eigenschaften
Docker ermöglicht ein automatisches Deployment einer
standardisierten Prozessumgebung für Linux-Anwendungen.
Alle Linux-Anwendungen laufen 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 – Containervirtualisierung leicht
gemacht 6 / 47
Vorteile
klein
schnell
sicher
flexibel
reproduzierbar
portabel
B1 Systems GmbH
Docker – Containervirtualisierung leicht
gemacht 7 / 47
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 – Containervirtualisierung leicht
gemacht 8 / 47
Einsatzbereiche
Docker ermöglicht ein schnelles Bereitstellen reproduzierbarer
(Laufzeit-)Umgebungen für Entwickler und Systemadministratoren:
Evaluations-Systeme
POC-Systeme
Test-Systeme
QA-Systeme
Live-Umgebungen
Konfigurationstests
. . .
B1 Systems GmbH
Docker – Containervirtualisierung leicht
gemacht 9 / 47
Container Execution Environments
Docker kann derzeit zwei Execution Driver für die Erstellung von
Containern nutzen:
LXC
bewährte leichtgewichtige Prozessvirtualisierung
im Linux-Kernel
Libcontainer
neue Eigenentwicklung von Docker zur Nutzung
der Kernel-Features
Libcontainer ist Default seit Version 1.0
Ein einzelner Kernel sorgt für die Limitierung und Isolation der
Ressourcen.
⇒ Emulation von Hardware entfällt
⇒ Performance-Overhead wird minimiert
B1 Systems GmbH
Docker – Containervirtualisierung leicht
gemacht 10 / 47
Linux Containers (LXC)
leichtgewichtiger Virtualisierungsmechanismus
(Prozessvirtualisierung) mit modularem Design
verwaltet Ressourcen und Prozessgruppen voneinander isoliert in
so genannten Containern
nutzt vorhandene Kernel-Features wie Capabilities, Control
Groups und Namespaces
„chroot on steroids“ (http://lxc.sourceforge.net)
seit 2.6.29 Teil des Upstream Kernels (und damit aller gängigen
Distributionen)
freie Software (größtenteils GNU-LGPL-Lizenz)
B1 Systems GmbH
Docker – Containervirtualisierung leicht
gemacht 11 / 47
libcontainer I
Go-Implementation, um Linux-Kernel-Namespaces ohne weitere
Abhängigkeiten für Container zu nutzen
vollständig unabhängig von LXC
verwaltet als Teil von Docker die nötigen Kernel-Features:
Capabilities
Control Groups
Namespaces
Apparmor-/SELinux-Profile
Netzwerkschnittstellen
Firewall-Regeln
B1 Systems GmbH
Docker – Containervirtualisierung leicht
gemacht 12 / 47
libcontainer II
Grundlage für die Windows-Implementierung
Grundlage für weitere Entwicklungen
Red Hat, Google, Canonical & Parallels
B1 Systems GmbH
Docker – Containervirtualisierung leicht
gemacht 13 / 47
Capabilities
teilen die Rechte eines privilegierten Benutzers (root) in
bestimmte Teilbereiche auf
können für unterschiedliche Prozesse individuell gesetzt werden
⇒ geringere Gefahr eines Missbrauchs von Rechten
da Container = Prozesse besteht die Möglichkeit, bestimmte
Rechte innerhalb eines Containers einzuräumen
minimieren Wechselwirkungen (z. B. beim Mounten des
root-Dateisystems mit read only beim Herunterfahren eines
Containers)
B1 Systems GmbH
Docker – Containervirtualisierung leicht
gemacht 14 / 47
CGroups 1/2
fassen Prozesse in einer hierarchischen Struktur zusammen.
ermöglichen es, den Zugriff dieser Prozesse auf Ressourcen zu
beschränken oder zu unterbinden und so die Nutzung dieser
Ressourcen zu limitieren.
Typische Ressourcen sind Prozessoren, Arbeitsspeicher,
Netzwerkressourcen oder Kernel Namespaces.
Die hierarchische Struktur ermöglicht es, Eigenschaften von
Subsystemen auf mehreren Ebenen zu unterteilen.
Zu jeder dieser Ebenen lässt sich die Nutzung der möglichen
Ressourcen weiter einschränken.
Prozesse (Container) lassen sich dann gezielt in die Tasklist der
betreffenden CGroup aufnehmen.
B1 Systems GmbH
Docker – Containervirtualisierung leicht
gemacht 15 / 47
CGroups 2/2
B1 Systems GmbH
Docker – Containervirtualisierung leicht
gemacht 16 / 47
Chroot
Funktion unter Unix-Systemen, um im laufenden System ein
neues Rootverzeichnis zuzuweisen
primär für das Aufsetzen virtueller Umgebungen entwickelt
einfache Möglichkeit, nicht vertrauenswürdige Programme zu
isolieren (aka. „Sandbox“)
einfacher Jail-Mechanismus – aus dem aber durchaus
ausgebrochen werden kann
Prozess im Chroot-Verzeichnis kann nicht mehr auf Dateien
außerhalb dieses Verzeichnisses zugreifen
Programm muss im Chroot-Verzeichnis eine komplette
Umgebung vorfinden (Platz für temporäre Dateien,
Konfigurationsdateien, Programmbibliotheken, . . . )
keine Ressourcen-Limitierung
B1 Systems GmbH
Docker – Containervirtualisierung leicht
gemacht 17 / 47
Kernel Namespaces
Integration von Namespaces im Kernel mit Version 2.6.19
Namespaces helfen, Prozesse voneinander zu isolieren
mögliche Eigenschaften zum Definieren eines Namensraumes:
ipc System-V-Interprozess-Kommunikation (IPC)
uts Hostname
mnt Mountpoints und Dateisysteme
pid Prozesse
net Netzwerk-Stack
user Benutzer (UIDs)
B1 Systems GmbH
Docker – Containervirtualisierung leicht
gemacht 18 / 47
Übersicht
B1 Systems GmbH
Docker – Containervirtualisierung leicht
gemacht 19 / 47
Images, Container und Registries
Docker Images
read only Template
Basis für Container
Docker Container
wird auf Basis eines Image und Dockerfile erzeugt
hält zur Laufzeit die Änderungen vor (Read-/Write-Layer)
Änderungen können in einem neuen Image übernommen
(„committed“) werden
Docker Registries
Image Repository
privat und öffentlich
zentrale Ressource: Docker Hub
B1 Systems GmbH
Docker – Containervirtualisierung leicht
gemacht 20 / 47
Bestandteile – Die Docker-Engine
Die Docker Engine besteht aus
zwei Teilen:
Server Daemon für den
Serverprozess zur
Verwaltung der
Container
Client Client zur
(Fern-)Steuerung
des Daemons
B1 Systems GmbH
Docker – Containervirtualisierung leicht
gemacht 21 / 47
Docker und die weitere Welt
Docker ist kollaborativ, modular und erweiterbar:
Atomic atomar aufgebautes Hostsystem für Docker-Container
CoreOS minimales Linux als Container-Betriebssystem
Gitlab Collaboration on Code
Jenkins Continuous Integration System für Servlet Container
(z. B. Apache Tomcat)
Puppet Konfigurationsmanagement
Fig Orchestration
Packer Erstellung fertiger Images mittels Templates
. . .
B1 Systems GmbH
Docker – Containervirtualisierung leicht
gemacht 22 / 47
Docker Hub
B1 Systems GmbH
Docker – Containervirtualisierung leicht
gemacht 23 / 47
Konfiguration
B1 Systems GmbH
Docker – Containervirtualisierung leicht
gemacht 24 / 47
Container – Ressourcen (Default)
CPU 1024 CPU-Shares für neue Container durch CGroups
(Default)
Speicher gesamter Arbeitsspeicher des Hosts nutzbar (Default)
Block Devices keine Bandbreiteneinschränkung beim Lese- und
Schreibzugriff auf Blockgeräte (Default)
Netzwerk automatisch über Linux-Bridge docker0 mit dem
Netzwerk des Hosts verbunden (Default)
Storage 10 GB Festplattenplatz pro Container (Default)
B1 Systems GmbH
Docker – Containervirtualisierung leicht
gemacht 25 / 47
Treiber für Storage
Der Docker-Daemon unterstützt drei verschiedene Treiber für
Storage:
aufs alt, nicht im Kernel (nur via Patchset), schnell (!!!)
devicemapper Thin Provisioning und Copy on Write (CoW),
Snapshots, Direct- &Loop-LVM
btrfs sehr schnell, Cow, Snapshots, default teilweise
OverlayFS sehr schnell, in der Entwicklung
B1 Systems GmbH
Docker – Containervirtualisierung leicht
gemacht 26 / 47
Treiber für Storage
Storage-Treiber setzen:
# docker -s <devicemapper|btrfs|overlayfs...>
Storage-Informationen abfragen:
# docker info
[...]
Storage Driver: devicemapper
Pool Name: docker-253:2-1443148-pool
Pool Blocksize: 65.54 kB
Data file: /var/lib/docker/devicemapper/devicemapper/data
Metadata file: /var/lib/docker/devicemapper/devicemapper/metadata
Data Space Used: 5.739 GB
Data Space Total: 107.4 GB
Metadata Space Used: 5.976 MB
Metadata Space Total: 2.147 GB
B1 Systems GmbH
Docker – Containervirtualisierung leicht
gemacht 27 / 47
Storage, Images und Container
layerbasiert
bis auf den obersten
alle read-only
beinhalten
Änderungen/Diffs
normalerweise als
Base-Image-Scratch
B1 Systems GmbH
Docker – Containervirtualisierung leicht
gemacht 28 / 47
Dockerfiles
B1 Systems GmbH
Docker – Containervirtualisierung leicht
gemacht 29 / 47
Dockerfiles – Grundlagen
Bauanleitung für ein Image
enthält die notwendigen Anweisungen zum 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
gewöhnlich groß)
Kommentare werden durch ein #-Zeichen eingeleitet
B1 Systems GmbH
Docker – Containervirtualisierung leicht
gemacht 30 / 47
Dockerfiles verwenden
Minimalistisches Dockerfile:
# johndoe/nodejs
# VERSION 0.0.1
FROM <repo>
MAINTAINER John Doe <johndoe@b1-systems.de>
Dockerfile verwenden (hier: aktuelles Verzeichnis):
$ docker build .
B1 Systems GmbH
Docker – Containervirtualisierung leicht
gemacht 31 / 47
Dockerfiles – Anweisungen
ADD/COPY Kopieren lokaler Dateien vom Host in den Container
CMD Aufruf für Programme innerhalb eines Containers
EXPOSE Portadresse für das Netzwerk
FROM Repository als Basis für das Image
RUN (Kommandozeilen-)Befehl ausführen
MAINTAINER Ersteller des Dockerfiles (optional)
VERSION Versionsnummer (optional)
B1 Systems GmbH
Docker – Containervirtualisierung leicht
gemacht 32 / 47
Dockerfiles – Beispiel
Dockerfile für MySQL-Server (Beispiel):
FROM rhel
MAINTAINER John Doe <info@b1-systems.de>
RUN yum install -y mysql mysql-server
ADD start.sh /start
RUN chmod +x /start
EXPOSE 3306
CMD ["/start"]
B1 Systems GmbH
Docker – Containervirtualisierung leicht
gemacht 33 / 47
GitLab – kollaborativ entwickeln
B1 Systems GmbH
Docker – Containervirtualisierung leicht
gemacht 34 / 47
Features
komplett frei und Open Source
Verwalten und Durchsuchen von Git Repositories
eigener Code auf eigenem Server
Verwaltung von Zugriffsrechten
Ausführen von Code Reviews und Merge Requests
Hooks
. . .
B1 Systems GmbH
Docker – Containervirtualisierung leicht
gemacht 35 / 47
GitLab 1/3
B1 Systems GmbH
Docker – Containervirtualisierung leicht
gemacht 36 / 47
GitLab 2/3
B1 Systems GmbH
Docker – Containervirtualisierung leicht
gemacht 37 / 47
GitLab 3/3
B1 Systems GmbH
Docker – Containervirtualisierung leicht
gemacht 38 / 47
Jenkins – Continuous Integration
B1 Systems GmbH
Docker – Containervirtualisierung leicht
gemacht 39 / 47
Was ist Jenkins?
Jenkins ist ein serverbasiertes System für Continuous
Integration, das in einem Servlet Container (wie Apache
Tomcat) betrieben wird.
Jenkins unterstützt SCM Tools wie AccuRev, CVS, Subversion,
Git, Mercurial, Perforce, Clearcase und RCT und kann Apache
Ant und Maven ausführen.
Jenkins ist freie Software; lizenziert unter der MIT-Licence.
Builds können auf unterschiedliche Weise gestartet werden, auch
per Commit-Trigger eines Versionskontrollsystems.
Jenkins überwacht die Ausführung wiederholter Jobs wie z. B.
das Bauen eines Softwareprojekts oder Cronjobs.
Jenkins ist in Java geschrieben.
B1 Systems GmbH
Docker – Containervirtualisierung leicht
gemacht 40 / 47
Jenkins 1/3
B1 Systems GmbH
Docker – Containervirtualisierung leicht
gemacht 41 / 47
Jenkins 2/3
B1 Systems GmbH
Docker – Containervirtualisierung leicht
gemacht 42 / 47
Jenkins 3/3
B1 Systems GmbH
Docker – Containervirtualisierung leicht
gemacht 43 / 47
Jenkins Plugins
Docker Buildstep verschiedene Docker-Kommandos zu einem Job als
Build Step hinzufügen
Docker publish Projekte mittels Dockerfile bauen und sie in die
Docker Registry laden
Git Verwendung von Git als Build-SCM
Gitlab Build Trigger, der GitLab vorgaukelt, dass Jenkins ein
GitLab CI ist
Build Pipeline Plugin bietet Ansicht der Build Pipeline von
Upstream- und Downstream-verbundenen Jobs, die eine
Build Pipeline bilden
Downstream-Ext Plugin unterstützt erweiterte Konfiguration zum
Triggern von Downstream Builds.
Publish Over SSH Plugin Daten- und Dateitransfer (SSH)
B1 Systems GmbH
Docker – Containervirtualisierung leicht
gemacht 44 / 47
Jenkins – Build Pipeline Plugin
bildet die Build Pipeline ab
erlaubt Festlegung manueller Trigger für Jobs, die vor der
Ausführung ein Eingreifen erfordern, z. B. Abnahmeprozess
außerhalb von Jenkins
B1 Systems GmbH
Docker – Containervirtualisierung leicht
gemacht 45 / 47
Jenkins – Downstream-Ext Plugin
Dieses Plugin bietet weitreichende Konfigurationsmöglichkeiten zum
Triggern von Downstream Builds:
triggert Builds nur, wenn ein Downstream-Job Änderungen im
SCM aufweist
triggert Builds, wenn ein Upstream Build
besser/gleich/schlechter als ein definiertes Ergebnis abschneidet
(SUCCESS, UNSTABLE, FAILURE, ABORTED)
für Matrix (aka Multi-Configuration) Jobs kann festgelegt
werden, welcher Teil des Jobs den Downstream Job triggern soll:
parent only, configuration only oder beide
B1 Systems GmbH
Docker – Containervirtualisierung leicht
gemacht 46 / 47
Vielen Dank für Ihre Aufmerksamkeit!
Bei weiteren Fragen wenden Sie sich bitte an info@b1-systems.de
oder +49 (0)8457 - 931096.
Besuchen Sie uns auch hier auf der CeBIT,
Halle 6, H16/312.
B1 Systems GmbH - Linux/Open Source Consulting,Training, Support & Development

Mais conteúdo relacionado

Mais procurados

Mais procurados (20)

Introduction to docker
Introduction to dockerIntroduction to docker
Introduction to docker
 
Docker Commands With Examples | Docker Tutorial | DevOps Tutorial | Docker Tr...
Docker Commands With Examples | Docker Tutorial | DevOps Tutorial | Docker Tr...Docker Commands With Examples | Docker Tutorial | DevOps Tutorial | Docker Tr...
Docker Commands With Examples | Docker Tutorial | DevOps Tutorial | Docker Tr...
 
Introduction to Docker
Introduction  to DockerIntroduction  to Docker
Introduction to Docker
 
Introduction to Docker
Introduction to DockerIntroduction to Docker
Introduction to Docker
 
Introduction to Ansible
Introduction to AnsibleIntroduction to Ansible
Introduction to Ansible
 
Docker Registry V2
Docker Registry V2Docker Registry V2
Docker Registry V2
 
Docker intro
Docker introDocker intro
Docker intro
 
Docker and the Linux Kernel
Docker and the Linux KernelDocker and the Linux Kernel
Docker and the Linux Kernel
 
Basic Linux Internals
Basic Linux InternalsBasic Linux Internals
Basic Linux Internals
 
Introduction To Docker
Introduction To  DockerIntroduction To  Docker
Introduction To Docker
 
Fundamentals of DevOps and CI/CD
Fundamentals of DevOps and CI/CDFundamentals of DevOps and CI/CD
Fundamentals of DevOps and CI/CD
 
Docker.pptx
Docker.pptxDocker.pptx
Docker.pptx
 
Grundlagen Virtualisierung
Grundlagen VirtualisierungGrundlagen Virtualisierung
Grundlagen Virtualisierung
 
Vagrant
VagrantVagrant
Vagrant
 
Hacking Jenkins
Hacking JenkinsHacking Jenkins
Hacking Jenkins
 
Docker Swarm 0.2.0
Docker Swarm 0.2.0Docker Swarm 0.2.0
Docker Swarm 0.2.0
 
Linux Internals - Kernel/Core
Linux Internals - Kernel/CoreLinux Internals - Kernel/Core
Linux Internals - Kernel/Core
 
Docker
DockerDocker
Docker
 
DevOps avec Ansible et Docker
DevOps avec Ansible et DockerDevOps avec Ansible et Docker
DevOps avec Ansible et Docker
 
초심자를 위한 도커 소개 및 입문
초심자를 위한 도커 소개 및 입문초심자를 위한 도커 소개 및 입문
초심자를 위한 도커 소개 및 입문
 

Semelhante a Docker - Containervirtualisierung leichtgemacht

Dockerbank II - 03 - Szenarien des Routinebetriebs (aktualisiert).pdf
Dockerbank II - 03 - Szenarien des Routinebetriebs (aktualisiert).pdfDockerbank II - 03 - Szenarien des Routinebetriebs (aktualisiert).pdf
Dockerbank II - 03 - Szenarien des Routinebetriebs (aktualisiert).pdf
Syahri Ramadhan
 

Semelhante a Docker - Containervirtualisierung leichtgemacht (20)

Docker - Automatisches Deployment für Linux-Instanzen
Docker - Automatisches Deployment für Linux-Instanzen Docker - Automatisches Deployment für Linux-Instanzen
Docker - Automatisches Deployment für Linux-Instanzen
 
Orchestrierung einer Private Cloud mit OpenStack Heat
Orchestrierung einer Private Cloud mit OpenStack Heat Orchestrierung einer Private Cloud mit OpenStack Heat
Orchestrierung einer Private Cloud mit OpenStack Heat
 
Docker und Virtualisierung - Container Use Cases für eine isolierte, performa...
Docker und Virtualisierung - Container Use Cases für eine isolierte, performa...Docker und Virtualisierung - Container Use Cases für eine isolierte, performa...
Docker und Virtualisierung - Container Use Cases für eine isolierte, performa...
 
Container im Betrieb - Ergebnisse der Validieren Docker vs. LXC
Container im Betrieb - Ergebnisse der Validieren Docker vs. LXCContainer im Betrieb - Ergebnisse der Validieren Docker vs. LXC
Container im Betrieb - Ergebnisse der Validieren Docker vs. LXC
 
OpenStack – Automatisiertes Bereitstellen von Instanzen
OpenStack – Automatisiertes Bereitstellen von InstanzenOpenStack – Automatisiertes Bereitstellen von Instanzen
OpenStack – Automatisiertes Bereitstellen von Instanzen
 
Ausfallsichere Kultur mit Plone
Ausfallsichere Kultur mit PloneAusfallsichere Kultur mit Plone
Ausfallsichere Kultur mit Plone
 
Ubuntu-/Debian-Packaging
Ubuntu-/Debian-PackagingUbuntu-/Debian-Packaging
Ubuntu-/Debian-Packaging
 
Softwarepaketierung und Continuous Integration bei Airbus Defence and Space
Softwarepaketierung und Continuous Integration bei Airbus Defence and SpaceSoftwarepaketierung und Continuous Integration bei Airbus Defence and Space
Softwarepaketierung und Continuous Integration bei Airbus Defence and Space
 
Vagrant, Puppet, Docker für Entwickler und Architekten
Vagrant, Puppet, Docker für Entwickler und ArchitektenVagrant, Puppet, Docker für Entwickler und Architekten
Vagrant, Puppet, Docker für Entwickler und Architekten
 
Verteilte Anwendungen bei Azure mit Docker und Kubernetes
Verteilte Anwendungen bei Azure mit Docker und KubernetesVerteilte Anwendungen bei Azure mit Docker und Kubernetes
Verteilte Anwendungen bei Azure mit Docker und Kubernetes
 
Containerized End-2-End Testing - JUG Saxony Day
Containerized End-2-End Testing - JUG Saxony DayContainerized End-2-End Testing - JUG Saxony Day
Containerized End-2-End Testing - JUG Saxony Day
 
Was gibt es Neues im Docker-Universum
Was gibt es Neues im Docker-UniversumWas gibt es Neues im Docker-Universum
Was gibt es Neues im Docker-Universum
 
Infrastructure as Code - BaselOne 17
Infrastructure as Code - BaselOne 17Infrastructure as Code - BaselOne 17
Infrastructure as Code - BaselOne 17
 
Ausrollen von Multi-Tier-Applikationen mit Docker
Ausrollen von Multi-Tier-Applikationen mit DockerAusrollen von Multi-Tier-Applikationen mit Docker
Ausrollen von Multi-Tier-Applikationen mit Docker
 
Dockerbank II - 03 - Szenarien des Routinebetriebs (aktualisiert).pdf
Dockerbank II - 03 - Szenarien des Routinebetriebs (aktualisiert).pdfDockerbank II - 03 - Szenarien des Routinebetriebs (aktualisiert).pdf
Dockerbank II - 03 - Szenarien des Routinebetriebs (aktualisiert).pdf
 
Opensource Tools für das Data Center Management
Opensource Tools für das Data Center ManagementOpensource Tools für das Data Center Management
Opensource Tools für das Data Center Management
 
Containerized End-2-End-Testing - Software-QS-Tag (deutsch)
Containerized End-2-End-Testing - Software-QS-Tag (deutsch)Containerized End-2-End-Testing - Software-QS-Tag (deutsch)
Containerized End-2-End-Testing - Software-QS-Tag (deutsch)
 
Roadshow Oracle Database 12c: News & Features
Roadshow Oracle Database 12c: News & FeaturesRoadshow Oracle Database 12c: News & Features
Roadshow Oracle Database 12c: News & Features
 
Docker Security - Architektur und Sicherheitsfunktionen von Containervirtuali...
Docker Security - Architektur und Sicherheitsfunktionen von Containervirtuali...Docker Security - Architektur und Sicherheitsfunktionen von Containervirtuali...
Docker Security - Architektur und Sicherheitsfunktionen von Containervirtuali...
 
OSMC 2008 | Nagios Hochverfügbar mit hearbeat V2 by Jan Dennis Bungart
OSMC 2008 | Nagios Hochverfügbar mit hearbeat V2 by Jan Dennis BungartOSMC 2008 | Nagios Hochverfügbar mit hearbeat V2 by Jan Dennis Bungart
OSMC 2008 | Nagios Hochverfügbar mit hearbeat V2 by Jan Dennis Bungart
 

Mais de B1 Systems GmbH

Mais de B1 Systems GmbH (20)

Ubuntu-Server als Backup- und Fileserver betreiben
Ubuntu-Server als Backup- und Fileserver betreibenUbuntu-Server als Backup- und Fileserver betreiben
Ubuntu-Server als Backup- und Fileserver betreiben
 
Android mit Google Befreiung, PlayStore Apps im eigenen Repo
Android mit Google Befreiung, PlayStore Apps im eigenen RepoAndroid mit Google Befreiung, PlayStore Apps im eigenen Repo
Android mit Google Befreiung, PlayStore Apps im eigenen Repo
 
Ambilight, Raspberry Pi, Ubuntu & Hyperion
Ambilight, Raspberry Pi, Ubuntu & HyperionAmbilight, Raspberry Pi, Ubuntu & Hyperion
Ambilight, Raspberry Pi, Ubuntu & Hyperion
 
B1 Thin Client Management bei der Fraport AG
B1 Thin Client Management bei der Fraport AGB1 Thin Client Management bei der Fraport AG
B1 Thin Client Management bei der Fraport AG
 
Salt - A Scalable Systems Management Solution for Datacenters
Salt - A Scalable Systems Management Solution for DatacentersSalt - A Scalable Systems Management Solution for Datacenters
Salt - A Scalable Systems Management Solution for Datacenters
 
Systemmanagement mit Puppet und Foreman
Systemmanagement mit Puppet und ForemanSystemmanagement mit Puppet und Foreman
Systemmanagement mit Puppet und Foreman
 
Simplify and run your development environments with Vagrant on OpenStack
Simplify and run your development environments with Vagrant on OpenStackSimplify and run your development environments with Vagrant on OpenStack
Simplify and run your development environments with Vagrant on OpenStack
 
Simplify and run your development environments with Vagrant on OpenStack
Simplify and run your development environments with Vagrant on OpenStackSimplify and run your development environments with Vagrant on OpenStack
Simplify and run your development environments with Vagrant on OpenStack
 
Bits and Bytes im Flow - Netzwerk im Wandel der Zeit
Bits and Bytes im Flow - Netzwerk im Wandel der ZeitBits and Bytes im Flow - Netzwerk im Wandel der Zeit
Bits and Bytes im Flow - Netzwerk im Wandel der Zeit
 
End of the Road - Facing Current Scaling Limits within OpenStack
End of the Road - Facing Current Scaling Limits within OpenStackEnd of the Road - Facing Current Scaling Limits within OpenStack
End of the Road - Facing Current Scaling Limits within OpenStack
 
OpenStack und Heat - Standardisierte Test- und Entwicklungsumgebungen
OpenStack und Heat - Standardisierte Test- und EntwicklungsumgebungenOpenStack und Heat - Standardisierte Test- und Entwicklungsumgebungen
OpenStack und Heat - Standardisierte Test- und Entwicklungsumgebungen
 
systemd im Alltag
systemd im Alltagsystemd im Alltag
systemd im Alltag
 
E-Mail-Verschlüsselung mit GnuPG
E-Mail-Verschlüsselung mit GnuPGE-Mail-Verschlüsselung mit GnuPG
E-Mail-Verschlüsselung mit GnuPG
 
Some Bashing II - Mit der Kommandozeile Abläufe automatisieren
Some Bashing II - Mit der Kommandozeile Abläufe automatisierenSome Bashing II - Mit der Kommandozeile Abläufe automatisieren
Some Bashing II - Mit der Kommandozeile Abläufe automatisieren
 
Entwicklungsumgebungen mit Vagrant
Entwicklungsumgebungen mit VagrantEntwicklungsumgebungen mit Vagrant
Entwicklungsumgebungen mit Vagrant
 
Btrfs - das Dateisystem der Zukunft?
Btrfs - das Dateisystem der Zukunft?Btrfs - das Dateisystem der Zukunft?
Btrfs - das Dateisystem der Zukunft?
 
OpenStack Betrieb & Support - 5 Jahre OpenStack Managed Service bei der SAP SE
OpenStack Betrieb & Support - 5 Jahre OpenStack Managed Service bei der SAP SEOpenStack Betrieb & Support - 5 Jahre OpenStack Managed Service bei der SAP SE
OpenStack Betrieb & Support - 5 Jahre OpenStack Managed Service bei der SAP SE
 
Ceph - Software Defined Storage für die Cloud
Ceph - Software Defined Storage für die CloudCeph - Software Defined Storage für die Cloud
Ceph - Software Defined Storage für die Cloud
 
Migrating deployment processes and Continuous Integration at SAP SE
Migrating deployment processes and Continuous Integration at SAP SEMigrating deployment processes and Continuous Integration at SAP SE
Migrating deployment processes and Continuous Integration at SAP SE
 
Salt - A Scalable Systems Management Solution for Datacenters
Salt - A Scalable Systems Management Solution for DatacentersSalt - A Scalable Systems Management Solution for Datacenters
Salt - A Scalable Systems Management Solution for Datacenters
 

Docker - Containervirtualisierung leichtgemacht

  • 1. Docker – Containervirtualisierung leicht gemacht CeBIT 2015 18. März 2015 Michel Rode Linux/Unix Consultant & Trainer B1 Systems GmbH rode@b1-systems.de B1 Systems GmbH - Linux/Open Source Consulting,Training, Support & Development
  • 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 – Containervirtualisierung leicht gemacht 2 / 47
  • 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 – Containervirtualisierung leicht gemacht 3 / 47
  • 4. Docker – Build, Ship and Run Applications B1 Systems GmbH Docker – Containervirtualisierung leicht gemacht 4 / 47
  • 5. Was ist Docker? Open Source Engine zum Standardisieren von Prozessumgebungen unter Linux „build, ship and run (distributed) applications“ offene Plattform für Entwickler und Systemadministratoren nutzt Container-Technologien (LXC/libcontainer) einfaches Erstellen und Teilen von Container Images Docker ist kein virtueller Server! (⇒ wenig Overhead) „Docker“ bezeichnet sowohl den Server-Daemon als auch den Client samt CLI Open-Source-Projekt, veröffentlicht unter der Apache-2.0-Lizenz B1 Systems GmbH Docker – Containervirtualisierung leicht gemacht 5 / 47
  • 6. Eigenschaften Docker ermöglicht ein automatisches Deployment einer standardisierten Prozessumgebung für Linux-Anwendungen. Alle Linux-Anwendungen laufen 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 – Containervirtualisierung leicht gemacht 6 / 47
  • 8. 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 – Containervirtualisierung leicht gemacht 8 / 47
  • 9. Einsatzbereiche Docker ermöglicht ein schnelles Bereitstellen reproduzierbarer (Laufzeit-)Umgebungen für Entwickler und Systemadministratoren: Evaluations-Systeme POC-Systeme Test-Systeme QA-Systeme Live-Umgebungen Konfigurationstests . . . B1 Systems GmbH Docker – Containervirtualisierung leicht gemacht 9 / 47
  • 10. Container Execution Environments Docker kann derzeit zwei Execution Driver für die Erstellung von Containern nutzen: LXC bewährte leichtgewichtige Prozessvirtualisierung im Linux-Kernel Libcontainer neue Eigenentwicklung von Docker zur Nutzung der Kernel-Features Libcontainer ist Default seit Version 1.0 Ein einzelner Kernel sorgt für die Limitierung und Isolation der Ressourcen. ⇒ Emulation von Hardware entfällt ⇒ Performance-Overhead wird minimiert B1 Systems GmbH Docker – Containervirtualisierung leicht gemacht 10 / 47
  • 11. Linux Containers (LXC) leichtgewichtiger Virtualisierungsmechanismus (Prozessvirtualisierung) mit modularem Design verwaltet Ressourcen und Prozessgruppen voneinander isoliert in so genannten Containern nutzt vorhandene Kernel-Features wie Capabilities, Control Groups und Namespaces „chroot on steroids“ (http://lxc.sourceforge.net) seit 2.6.29 Teil des Upstream Kernels (und damit aller gängigen Distributionen) freie Software (größtenteils GNU-LGPL-Lizenz) B1 Systems GmbH Docker – Containervirtualisierung leicht gemacht 11 / 47
  • 12. libcontainer I Go-Implementation, um Linux-Kernel-Namespaces ohne weitere Abhängigkeiten für Container zu nutzen vollständig unabhängig von LXC verwaltet als Teil von Docker die nötigen Kernel-Features: Capabilities Control Groups Namespaces Apparmor-/SELinux-Profile Netzwerkschnittstellen Firewall-Regeln B1 Systems GmbH Docker – Containervirtualisierung leicht gemacht 12 / 47
  • 13. libcontainer II Grundlage für die Windows-Implementierung Grundlage für weitere Entwicklungen Red Hat, Google, Canonical & Parallels B1 Systems GmbH Docker – Containervirtualisierung leicht gemacht 13 / 47
  • 14. Capabilities teilen die Rechte eines privilegierten Benutzers (root) in bestimmte Teilbereiche auf können für unterschiedliche Prozesse individuell gesetzt werden ⇒ geringere Gefahr eines Missbrauchs von Rechten da Container = Prozesse besteht die Möglichkeit, bestimmte Rechte innerhalb eines Containers einzuräumen minimieren Wechselwirkungen (z. B. beim Mounten des root-Dateisystems mit read only beim Herunterfahren eines Containers) B1 Systems GmbH Docker – Containervirtualisierung leicht gemacht 14 / 47
  • 15. CGroups 1/2 fassen Prozesse in einer hierarchischen Struktur zusammen. ermöglichen es, den Zugriff dieser Prozesse auf Ressourcen zu beschränken oder zu unterbinden und so die Nutzung dieser Ressourcen zu limitieren. Typische Ressourcen sind Prozessoren, Arbeitsspeicher, Netzwerkressourcen oder Kernel Namespaces. Die hierarchische Struktur ermöglicht es, Eigenschaften von Subsystemen auf mehreren Ebenen zu unterteilen. Zu jeder dieser Ebenen lässt sich die Nutzung der möglichen Ressourcen weiter einschränken. Prozesse (Container) lassen sich dann gezielt in die Tasklist der betreffenden CGroup aufnehmen. B1 Systems GmbH Docker – Containervirtualisierung leicht gemacht 15 / 47
  • 16. CGroups 2/2 B1 Systems GmbH Docker – Containervirtualisierung leicht gemacht 16 / 47
  • 17. Chroot Funktion unter Unix-Systemen, um im laufenden System ein neues Rootverzeichnis zuzuweisen primär für das Aufsetzen virtueller Umgebungen entwickelt einfache Möglichkeit, nicht vertrauenswürdige Programme zu isolieren (aka. „Sandbox“) einfacher Jail-Mechanismus – aus dem aber durchaus ausgebrochen werden kann Prozess im Chroot-Verzeichnis kann nicht mehr auf Dateien außerhalb dieses Verzeichnisses zugreifen Programm muss im Chroot-Verzeichnis eine komplette Umgebung vorfinden (Platz für temporäre Dateien, Konfigurationsdateien, Programmbibliotheken, . . . ) keine Ressourcen-Limitierung B1 Systems GmbH Docker – Containervirtualisierung leicht gemacht 17 / 47
  • 18. Kernel Namespaces Integration von Namespaces im Kernel mit Version 2.6.19 Namespaces helfen, Prozesse voneinander zu isolieren mögliche Eigenschaften zum Definieren eines Namensraumes: ipc System-V-Interprozess-Kommunikation (IPC) uts Hostname mnt Mountpoints und Dateisysteme pid Prozesse net Netzwerk-Stack user Benutzer (UIDs) B1 Systems GmbH Docker – Containervirtualisierung leicht gemacht 18 / 47
  • 19. Übersicht B1 Systems GmbH Docker – Containervirtualisierung leicht gemacht 19 / 47
  • 20. Images, Container und Registries Docker Images read only Template Basis für Container Docker Container wird auf Basis eines Image und Dockerfile erzeugt hält zur Laufzeit die Änderungen vor (Read-/Write-Layer) Änderungen können in einem neuen Image übernommen („committed“) werden Docker Registries Image Repository privat und öffentlich zentrale Ressource: Docker Hub B1 Systems GmbH Docker – Containervirtualisierung leicht gemacht 20 / 47
  • 21. Bestandteile – Die Docker-Engine Die Docker Engine besteht aus zwei Teilen: Server Daemon für den Serverprozess zur Verwaltung der Container Client Client zur (Fern-)Steuerung des Daemons B1 Systems GmbH Docker – Containervirtualisierung leicht gemacht 21 / 47
  • 22. Docker und die weitere Welt Docker ist kollaborativ, modular und erweiterbar: Atomic atomar aufgebautes Hostsystem für Docker-Container CoreOS minimales Linux als Container-Betriebssystem Gitlab Collaboration on Code Jenkins Continuous Integration System für Servlet Container (z. B. Apache Tomcat) Puppet Konfigurationsmanagement Fig Orchestration Packer Erstellung fertiger Images mittels Templates . . . B1 Systems GmbH Docker – Containervirtualisierung leicht gemacht 22 / 47
  • 23. Docker Hub B1 Systems GmbH Docker – Containervirtualisierung leicht gemacht 23 / 47
  • 24. Konfiguration B1 Systems GmbH Docker – Containervirtualisierung leicht gemacht 24 / 47
  • 25. Container – Ressourcen (Default) CPU 1024 CPU-Shares für neue Container durch CGroups (Default) Speicher gesamter Arbeitsspeicher des Hosts nutzbar (Default) Block Devices keine Bandbreiteneinschränkung beim Lese- und Schreibzugriff auf Blockgeräte (Default) Netzwerk automatisch über Linux-Bridge docker0 mit dem Netzwerk des Hosts verbunden (Default) Storage 10 GB Festplattenplatz pro Container (Default) B1 Systems GmbH Docker – Containervirtualisierung leicht gemacht 25 / 47
  • 26. Treiber für Storage Der Docker-Daemon unterstützt drei verschiedene Treiber für Storage: aufs alt, nicht im Kernel (nur via Patchset), schnell (!!!) devicemapper Thin Provisioning und Copy on Write (CoW), Snapshots, Direct- &Loop-LVM btrfs sehr schnell, Cow, Snapshots, default teilweise OverlayFS sehr schnell, in der Entwicklung B1 Systems GmbH Docker – Containervirtualisierung leicht gemacht 26 / 47
  • 27. Treiber für Storage Storage-Treiber setzen: # docker -s <devicemapper|btrfs|overlayfs...> Storage-Informationen abfragen: # docker info [...] Storage Driver: devicemapper Pool Name: docker-253:2-1443148-pool Pool Blocksize: 65.54 kB Data file: /var/lib/docker/devicemapper/devicemapper/data Metadata file: /var/lib/docker/devicemapper/devicemapper/metadata Data Space Used: 5.739 GB Data Space Total: 107.4 GB Metadata Space Used: 5.976 MB Metadata Space Total: 2.147 GB B1 Systems GmbH Docker – Containervirtualisierung leicht gemacht 27 / 47
  • 28. Storage, Images und Container layerbasiert bis auf den obersten alle read-only beinhalten Änderungen/Diffs normalerweise als Base-Image-Scratch B1 Systems GmbH Docker – Containervirtualisierung leicht gemacht 28 / 47
  • 29. Dockerfiles B1 Systems GmbH Docker – Containervirtualisierung leicht gemacht 29 / 47
  • 30. Dockerfiles – Grundlagen Bauanleitung für ein Image enthält die notwendigen Anweisungen zum 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 gewöhnlich groß) Kommentare werden durch ein #-Zeichen eingeleitet B1 Systems GmbH Docker – Containervirtualisierung leicht gemacht 30 / 47
  • 31. Dockerfiles verwenden Minimalistisches Dockerfile: # johndoe/nodejs # VERSION 0.0.1 FROM <repo> MAINTAINER John Doe <johndoe@b1-systems.de> Dockerfile verwenden (hier: aktuelles Verzeichnis): $ docker build . B1 Systems GmbH Docker – Containervirtualisierung leicht gemacht 31 / 47
  • 32. Dockerfiles – Anweisungen ADD/COPY Kopieren lokaler Dateien vom Host in den Container CMD Aufruf für Programme innerhalb eines Containers EXPOSE Portadresse für das Netzwerk FROM Repository als Basis für das Image RUN (Kommandozeilen-)Befehl ausführen MAINTAINER Ersteller des Dockerfiles (optional) VERSION Versionsnummer (optional) B1 Systems GmbH Docker – Containervirtualisierung leicht gemacht 32 / 47
  • 33. Dockerfiles – Beispiel Dockerfile für MySQL-Server (Beispiel): FROM rhel MAINTAINER John Doe <info@b1-systems.de> RUN yum install -y mysql mysql-server ADD start.sh /start RUN chmod +x /start EXPOSE 3306 CMD ["/start"] B1 Systems GmbH Docker – Containervirtualisierung leicht gemacht 33 / 47
  • 34. GitLab – kollaborativ entwickeln B1 Systems GmbH Docker – Containervirtualisierung leicht gemacht 34 / 47
  • 35. Features komplett frei und Open Source Verwalten und Durchsuchen von Git Repositories eigener Code auf eigenem Server Verwaltung von Zugriffsrechten Ausführen von Code Reviews und Merge Requests Hooks . . . B1 Systems GmbH Docker – Containervirtualisierung leicht gemacht 35 / 47
  • 36. GitLab 1/3 B1 Systems GmbH Docker – Containervirtualisierung leicht gemacht 36 / 47
  • 37. GitLab 2/3 B1 Systems GmbH Docker – Containervirtualisierung leicht gemacht 37 / 47
  • 38. GitLab 3/3 B1 Systems GmbH Docker – Containervirtualisierung leicht gemacht 38 / 47
  • 39. Jenkins – Continuous Integration B1 Systems GmbH Docker – Containervirtualisierung leicht gemacht 39 / 47
  • 40. Was ist Jenkins? Jenkins ist ein serverbasiertes System für Continuous Integration, das in einem Servlet Container (wie Apache Tomcat) betrieben wird. Jenkins unterstützt SCM Tools wie AccuRev, CVS, Subversion, Git, Mercurial, Perforce, Clearcase und RCT und kann Apache Ant und Maven ausführen. Jenkins ist freie Software; lizenziert unter der MIT-Licence. Builds können auf unterschiedliche Weise gestartet werden, auch per Commit-Trigger eines Versionskontrollsystems. Jenkins überwacht die Ausführung wiederholter Jobs wie z. B. das Bauen eines Softwareprojekts oder Cronjobs. Jenkins ist in Java geschrieben. B1 Systems GmbH Docker – Containervirtualisierung leicht gemacht 40 / 47
  • 41. Jenkins 1/3 B1 Systems GmbH Docker – Containervirtualisierung leicht gemacht 41 / 47
  • 42. Jenkins 2/3 B1 Systems GmbH Docker – Containervirtualisierung leicht gemacht 42 / 47
  • 43. Jenkins 3/3 B1 Systems GmbH Docker – Containervirtualisierung leicht gemacht 43 / 47
  • 44. Jenkins Plugins Docker Buildstep verschiedene Docker-Kommandos zu einem Job als Build Step hinzufügen Docker publish Projekte mittels Dockerfile bauen und sie in die Docker Registry laden Git Verwendung von Git als Build-SCM Gitlab Build Trigger, der GitLab vorgaukelt, dass Jenkins ein GitLab CI ist Build Pipeline Plugin bietet Ansicht der Build Pipeline von Upstream- und Downstream-verbundenen Jobs, die eine Build Pipeline bilden Downstream-Ext Plugin unterstützt erweiterte Konfiguration zum Triggern von Downstream Builds. Publish Over SSH Plugin Daten- und Dateitransfer (SSH) B1 Systems GmbH Docker – Containervirtualisierung leicht gemacht 44 / 47
  • 45. Jenkins – Build Pipeline Plugin bildet die Build Pipeline ab erlaubt Festlegung manueller Trigger für Jobs, die vor der Ausführung ein Eingreifen erfordern, z. B. Abnahmeprozess außerhalb von Jenkins B1 Systems GmbH Docker – Containervirtualisierung leicht gemacht 45 / 47
  • 46. Jenkins – Downstream-Ext Plugin Dieses Plugin bietet weitreichende Konfigurationsmöglichkeiten zum Triggern von Downstream Builds: triggert Builds nur, wenn ein Downstream-Job Änderungen im SCM aufweist triggert Builds, wenn ein Upstream Build besser/gleich/schlechter als ein definiertes Ergebnis abschneidet (SUCCESS, UNSTABLE, FAILURE, ABORTED) für Matrix (aka Multi-Configuration) Jobs kann festgelegt werden, welcher Teil des Jobs den Downstream Job triggern soll: parent only, configuration only oder beide B1 Systems GmbH Docker – Containervirtualisierung leicht gemacht 46 / 47
  • 47. Vielen Dank für Ihre Aufmerksamkeit! Bei weiteren Fragen wenden Sie sich bitte an info@b1-systems.de oder +49 (0)8457 - 931096. Besuchen Sie uns auch hier auf der CeBIT, Halle 6, H16/312. B1 Systems GmbH - Linux/Open Source Consulting,Training, Support & Development