SlideShare ist ein Scribd-Unternehmen logo
Docker und Virtualisierung – Container
Use Cases für eine isolierte,
performante Zukunft
CommitterConf 2015, Essen 10. November 2015
Christian Baumann
Linux Consultant
B1 Systems GmbH
baumann@b1-systems.de
B1 Systems GmbH - Linux/Open Source Consulting,Training, Support & Development
Einleitung – Docker, OpenStack
B1 Systems GmbH Docker und Virtualisierung 2 / 34
Docker?
B1 Systems GmbH Docker und Virtualisierung 3 / 34
OpenStack?
B1 Systems GmbH Docker und Virtualisierung 4 / 34
Typen von Virtualisierung
OS-Virtualisierung
Emulation
Hypervisor-Virtualisierung
Typ 1
Typ 2
Paravirtualisierung
B1 Systems GmbH Docker und Virtualisierung 5 / 34
Virtualisierung – Timeline
1979 Unix chroot Syscall
1990s Xenoserver Research Cambridge
1999 VMware Workstation 1.0
2001 VMware ESX 1.0
2002 Xen OpenSource
2003 Xen 1.0
2006 Amazon EC2
2007 KVM im Linux Kernel
2008 Rackspace Cloud
2008 LXC in Linux Kernel
2013 Docker
B1 Systems GmbH Docker und Virtualisierung 6 / 34
Service-Pyramide
B1 Systems GmbH Docker und Virtualisierung 7 / 34
The Big Picture
B1 Systems GmbH Docker und Virtualisierung 8 / 34
B1 Systems GmbH Docker und Virtualisierung 9 / 34
Virtualisierung – Eigenschaften
maximale Isolation
vollwertige Hardware-Umgebung
Bereitstellungszeit: 5-30 Minuten
Größe: GBs
Performance-Overhead durch Hypervisor
Management-Overhead
B1 Systems GmbH Docker und Virtualisierung 10 / 34
Definition einer VM – SLES12.xml
<domain type=’kvm’>
<name>SLES12</name>
<uuid>1b9661f5....</uuid>
<title>SLES12_PROD_VM</title>
<memory unit=’KiB’>1048576</memory>
<currentMemory’>1048576</currentMemory>
<type arch=’x86_64’>hvm</type>
<boot dev=’hd’/>
...
<disk type=’file’ device=’disk’>
<source file=’SLES12_PROD.qcow2’/>
...
<interface type=’network’>
<mac address=’52:54:00:bc:d7:59’/>
...
<timer name=’rtc’ tickpolicy=’catchup’/>
<timer name=’pit’ tickpolicy=’delay’/>
<timer name=’hpet’ present=’no’/>
B1 Systems GmbH Docker und Virtualisierung 11 / 34
LXC – LinuX Containers
LXC APP Container:
1 Prozess direkt vom Host
kaum Isolation
Bereitstellung: sofort
Größe: ~0
Performance: nativ
Overhead: ~0
LXC OS Container:
Init Prozess o.ä.
gute Isolation
Bereitstellung: nativ
Größe: MBs
Performance: nativ
Overhead: gering
B1 Systems GmbH Docker und Virtualisierung 12 / 34
Definition LXC APP Container:
<domain type=’lxc’>
<name>sh</name>
<uuid>58f081cd-09f9-4a4a-9f37-5d3bc687bf53</uuid>
<memory unit=’KiB’>908288</memory>
<os> <type>exe</type> <init>/bin/sh</init> </os>
...
Definition LXC OS Container:
<os> <type>exe</type> <init>/sbin/init</init> </os>
...
<filesystem type=’mount’ accessmode=’passthrough’>
<source dir=’/srv/lxc-sles12’/>
<target dir=’/’/>
</filesystem>
B1 Systems GmbH Docker und Virtualisierung 13 / 34
Docker – Eigenschaften
Applikationsfokus:
„Build, Ship and Run Applications“
nutzt Container-Technologien
(LXC/libcontainer)
gute Isolation der Container
Bereitstellung: Sekunden – Minuten
Größe: MBs
B1 Systems GmbH Docker und Virtualisierung 14 / 34
Definition einer Docker-App:
FROM debian:latest
RUN apt-get install -y emacs
RUN apt-get install -y apache2
EXPOSE 80
ADD www /var/www/site
CMD /usr/sbin/apache2ctl -D FOREGROUND
build und run der Docker-App:
$ docker build -t baumann/myapache .
$ docker run -P -d baumann/myapache
B1 Systems GmbH Docker und Virtualisierung 15 / 34
Docker Layered Images
build eines Docker Layered Image:
$ docker build -t baumann/myapache
Uploading context 10.24 kB
Uploading context
Step 1 : FROM debian
---> bbba202fe96b
Step 2 : CMD apt-get install emacs
---> Using cache
---> 31182097be13
Step 3 : CMD apt-get install ap..
---> Using cache
---> 2a5ffc17324d
....
Successfully built 2a5ffc17324d
B1 Systems GmbH Docker und Virtualisierung 16 / 34
B1 Systems GmbH Docker und Virtualisierung 17 / 34
Docker –
Build, Ship and Run Applications
B1 Systems GmbH Docker und Virtualisierung 18 / 34
Container Execution Environments
Docker kann derzeit drei 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
libvirt-lxc LXC-Treiber mittels libvirt
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 und Virtualisierung 19 / 34
B1 Systems GmbH Docker und Virtualisierung 20 / 34
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 und Virtualisierung 21 / 34
libcontainer
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 und Virtualisierung 22 / 34
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 und Virtualisierung 23 / 34
CGroups
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 und Virtualisierung 24 / 34
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
Prozesse im Chroot-Verzeichnis können 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 und Virtualisierung 25 / 34
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 und Virtualisierung 26 / 34
Bestandteile – Das Docker-Universum
B1 Systems GmbH Docker und Virtualisierung 27 / 34
Definition einer Docker-App:
FROM debian:latest
RUN apt-get install -y emacs
RUN apt-get install -y apache2
EXPOSE 80
ADD www /var/www/site
CMD /usr/sbin/apache2ctl -D FOREGROUND
build und run der Docker-App:
$ docker build -t baumann/myapache .
$ docker run -P -d baumann/myapache
B1 Systems GmbH Docker und Virtualisierung 28 / 34
Docker Layered Images
build eines Docker Layered Image:
$ docker build -t baumann/myapache
Uploading context 10.24 kB
Uploading context
Step 1 : FROM debian
---> bbba202fe96b
Step 2 : CMD apt-get install emacs
---> Using cache
---> 31182097be13
Step 3 : CMD apt-get install ap..
---> Using cache
---> 2a5ffc17324d
....
Successfully built 2a5ffc17324d
B1 Systems GmbH Docker und Virtualisierung 29 / 34
Images, Container und Registries
Docker Images
Read-Only-Templates
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 und Virtualisierung 30 / 34
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 und Virtualisierung 31 / 34
Docker Projekte
Docker ist kollaborativ, modular und erweiterbar:
Atomic atomar aufgebautes Hostsystem für Docker-Container
CoreOS minimales Linux als Container-Betriebssystem
Machine Docker Rollout Werkzeug
Swarm nativer Docker Cluster
Compose Multi Tier Applikations Rollout
boot2docker Docker auf MacOS und Windows
Packer Erstellung fertiger Images mittels Templates
. . .
B1 Systems GmbH Docker und Virtualisierung 32 / 34
Docker und OpenStack
Docker im OpenStack Kontext:
novadocker Docker als Backend in Nova
heat docker ressource Docker Einbindung in Heat
Dockenstack Devstack auf Docker
Kolla OpenStack in Docker
Magnum Container Orchestration in OpenStack
. . .
B1 Systems GmbH Docker und Virtualisierung 33 / 34
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

Weitere ähnliche Inhalte

Was ist angesagt?

Was ist angesagt? (20)

docker.io @ CentOS 7 - Secure And Portable Containers Made Easy
docker.io @ CentOS 7 - Secure And Portable Containers Made Easydocker.io @ CentOS 7 - Secure And Portable Containers Made Easy
docker.io @ CentOS 7 - Secure And Portable Containers Made Easy
 
Einführung in Docker
Einführung in DockerEinführung in Docker
Einführung in Docker
 
docker.io - Secure And Portable Containers Made Easy
docker.io - Secure And Portable Containers Made Easydocker.io - Secure And Portable Containers Made Easy
docker.io - Secure And Portable Containers Made Easy
 
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
 
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...
 
Tipps und Tricks im Umgang mit Docker
Tipps und Tricks im Umgang mit DockerTipps und Tricks im Umgang mit Docker
Tipps und Tricks im Umgang mit Docker
 
Entwicklungsumgebungen mit Vagrant
Entwicklungsumgebungen mit VagrantEntwicklungsumgebungen mit Vagrant
Entwicklungsumgebungen mit Vagrant
 
Docker Einführung @GPN15
Docker Einführung @GPN15Docker Einführung @GPN15
Docker Einführung @GPN15
 
Docker for Windows / Windows Container
Docker for Windows / Windows ContainerDocker for Windows / Windows Container
Docker for Windows / Windows Container
 
Docker for Python Development
Docker for Python DevelopmentDocker for Python Development
Docker for Python Development
 
Openshift
OpenshiftOpenshift
Openshift
 
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
 
MCSA 070-740 Prüfungsfragen deutsch
MCSA 070-740 Prüfungsfragen deutschMCSA 070-740 Prüfungsfragen deutsch
MCSA 070-740 Prüfungsfragen deutsch
 
Anleitung zur Installation von Tomcat für Opencms
Anleitung zur Installation von Tomcat für OpencmsAnleitung zur Installation von Tomcat für Opencms
Anleitung zur Installation von Tomcat für Opencms
 
Jenkins Acceleration
Jenkins AccelerationJenkins Acceleration
Jenkins Acceleration
 
Was ist Docker ?
Was ist Docker ?Was ist Docker ?
Was ist Docker ?
 
Storage Cluster mit CEPH
Storage Cluster mit CEPHStorage Cluster mit CEPH
Storage Cluster mit CEPH
 
Infrastructure as Code - BaselOne 17
Infrastructure as Code - BaselOne 17Infrastructure as Code - BaselOne 17
Infrastructure as Code - BaselOne 17
 
Compact, Compress, De-DUplicate
Compact, Compress, De-DUplicateCompact, Compress, De-DUplicate
Compact, Compress, De-DUplicate
 
Welches Versionskontrollsystem sollte ich nutzen? (SVN, Git, Hg)
Welches Versionskontrollsystem sollte ich nutzen? (SVN, Git, Hg)Welches Versionskontrollsystem sollte ich nutzen? (SVN, Git, Hg)
Welches Versionskontrollsystem sollte ich nutzen? (SVN, Git, Hg)
 

Andere mochten auch

Final Report HeroMoto
Final Report HeroMotoFinal Report HeroMoto
Final Report HeroMoto
Vivek Pabla
 
골드카지노 ''SX797.COM'' 카지노방법
골드카지노 ''SX797.COM'' 카지노방법골드카지노 ''SX797.COM'' 카지노방법
골드카지노 ''SX797.COM'' 카지노방법
gjsokdfjl
 
Preliminary task screen shots
Preliminary task screen shotsPreliminary task screen shots
Preliminary task screen shots
chloreadx
 

Andere mochten auch (9)

Final Report HeroMoto
Final Report HeroMotoFinal Report HeroMoto
Final Report HeroMoto
 
2016 Mercy Home Poker Night
2016 Mercy Home Poker Night2016 Mercy Home Poker Night
2016 Mercy Home Poker Night
 
골드카지노 ''SX797.COM'' 카지노방법
골드카지노 ''SX797.COM'' 카지노방법골드카지노 ''SX797.COM'' 카지노방법
골드카지노 ''SX797.COM'' 카지노방법
 
Get 2 Give1
Get 2 Give1 Get 2 Give1
Get 2 Give1
 
Preliminary task screen shots
Preliminary task screen shotsPreliminary task screen shots
Preliminary task screen shots
 
Ppt deber.
Ppt deber.Ppt deber.
Ppt deber.
 
Corporate communications and real time
Corporate communications and real timeCorporate communications and real time
Corporate communications and real time
 
Теорема піфагора
Теорема піфагораТеорема піфагора
Теорема піфагора
 
Tendencias actuales y futuras | Future Trends
Tendencias actuales y futuras | Future TrendsTendencias actuales y futuras | Future Trends
Tendencias actuales y futuras | Future Trends
 

Ähnlich wie Docker und Virtualisierung - Container Use Cases für eine isolierte, performante Zukunft

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
 
Boost your APEX Deployment and Provisioning with Docker
Boost your APEX Deployment and Provisioning with DockerBoost your APEX Deployment and Provisioning with Docker
Boost your APEX Deployment and Provisioning with Docker
Steven Grzbielok
 

Ähnlich wie Docker und Virtualisierung - Container Use Cases für eine isolierte, performante Zukunft (19)

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
 
Docker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-PatternsDocker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-Patterns
 
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
 
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
 
Java Aktuell Bernd Zuther Canary Releases mit der Very Awesome Microservices ...
Java Aktuell Bernd Zuther Canary Releases mit der Very Awesome Microservices ...Java Aktuell Bernd Zuther Canary Releases mit der Very Awesome Microservices ...
Java Aktuell Bernd Zuther Canary Releases mit der Very Awesome Microservices ...
 
WebLogic im Docker Container
WebLogic im Docker ContainerWebLogic im Docker Container
WebLogic im Docker Container
 
System Center Configuration Manager with Azure, Intune and Application Manage...
System Center Configuration Manager with Azure, Intune and Application Manage...System Center Configuration Manager with Azure, Intune and Application Manage...
System Center Configuration Manager with Azure, Intune and Application Manage...
 
WebLogic im Docker Container
WebLogic im Docker ContainerWebLogic im Docker Container
WebLogic im Docker Container
 
DACHNUG50 CNX3 Monitoring.pdf
DACHNUG50 CNX3 Monitoring.pdfDACHNUG50 CNX3 Monitoring.pdf
DACHNUG50 CNX3 Monitoring.pdf
 
Windows Server 8 - eine Vorschau
Windows Server 8 - eine VorschauWindows Server 8 - eine Vorschau
Windows Server 8 - eine Vorschau
 
DOAG Webinar Oracle und Docker
DOAG Webinar Oracle und DockerDOAG Webinar Oracle und Docker
DOAG Webinar Oracle und Docker
 
System- & Konfigurationsmanagement mit Foreman & Puppet
System- & Konfigurationsmanagement mit Foreman & Puppet System- & Konfigurationsmanagement mit Foreman & Puppet
System- & Konfigurationsmanagement mit Foreman & Puppet
 
elemente websolutions - Zusammenfassung T3DD09
elemente websolutions - Zusammenfassung T3DD09elemente websolutions - Zusammenfassung T3DD09
elemente websolutions - Zusammenfassung T3DD09
 
FLOW3-Workshop F3X12
FLOW3-Workshop F3X12FLOW3-Workshop F3X12
FLOW3-Workshop F3X12
 
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
 
Boost your APEX Deployment and Provisioning with Docker
Boost your APEX Deployment and Provisioning with DockerBoost your APEX Deployment and Provisioning with Docker
Boost your APEX Deployment and Provisioning with Docker
 
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
 
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
 
Was ist Docker?
Was ist Docker?Was ist Docker?
Was ist Docker?
 

Mehr von B1 Systems GmbH

Mehr von B1 Systems GmbH (20)

Ubuntu-/Debian-Packaging
Ubuntu-/Debian-PackagingUbuntu-/Debian-Packaging
Ubuntu-/Debian-Packaging
 
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
 
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
 
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
 
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
 
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 und Virtualisierung - Container Use Cases für eine isolierte, performante Zukunft

  • 1. Docker und Virtualisierung – Container Use Cases für eine isolierte, performante Zukunft CommitterConf 2015, Essen 10. November 2015 Christian Baumann Linux Consultant B1 Systems GmbH baumann@b1-systems.de B1 Systems GmbH - Linux/Open Source Consulting,Training, Support & Development
  • 2. Einleitung – Docker, OpenStack B1 Systems GmbH Docker und Virtualisierung 2 / 34
  • 3. Docker? B1 Systems GmbH Docker und Virtualisierung 3 / 34
  • 4. OpenStack? B1 Systems GmbH Docker und Virtualisierung 4 / 34
  • 5. Typen von Virtualisierung OS-Virtualisierung Emulation Hypervisor-Virtualisierung Typ 1 Typ 2 Paravirtualisierung B1 Systems GmbH Docker und Virtualisierung 5 / 34
  • 6. Virtualisierung – Timeline 1979 Unix chroot Syscall 1990s Xenoserver Research Cambridge 1999 VMware Workstation 1.0 2001 VMware ESX 1.0 2002 Xen OpenSource 2003 Xen 1.0 2006 Amazon EC2 2007 KVM im Linux Kernel 2008 Rackspace Cloud 2008 LXC in Linux Kernel 2013 Docker B1 Systems GmbH Docker und Virtualisierung 6 / 34
  • 7. Service-Pyramide B1 Systems GmbH Docker und Virtualisierung 7 / 34
  • 8. The Big Picture B1 Systems GmbH Docker und Virtualisierung 8 / 34
  • 9. B1 Systems GmbH Docker und Virtualisierung 9 / 34
  • 10. Virtualisierung – Eigenschaften maximale Isolation vollwertige Hardware-Umgebung Bereitstellungszeit: 5-30 Minuten Größe: GBs Performance-Overhead durch Hypervisor Management-Overhead B1 Systems GmbH Docker und Virtualisierung 10 / 34
  • 11. Definition einer VM – SLES12.xml <domain type=’kvm’> <name>SLES12</name> <uuid>1b9661f5....</uuid> <title>SLES12_PROD_VM</title> <memory unit=’KiB’>1048576</memory> <currentMemory’>1048576</currentMemory> <type arch=’x86_64’>hvm</type> <boot dev=’hd’/> ... <disk type=’file’ device=’disk’> <source file=’SLES12_PROD.qcow2’/> ... <interface type=’network’> <mac address=’52:54:00:bc:d7:59’/> ... <timer name=’rtc’ tickpolicy=’catchup’/> <timer name=’pit’ tickpolicy=’delay’/> <timer name=’hpet’ present=’no’/> B1 Systems GmbH Docker und Virtualisierung 11 / 34
  • 12. LXC – LinuX Containers LXC APP Container: 1 Prozess direkt vom Host kaum Isolation Bereitstellung: sofort Größe: ~0 Performance: nativ Overhead: ~0 LXC OS Container: Init Prozess o.ä. gute Isolation Bereitstellung: nativ Größe: MBs Performance: nativ Overhead: gering B1 Systems GmbH Docker und Virtualisierung 12 / 34
  • 13. Definition LXC APP Container: <domain type=’lxc’> <name>sh</name> <uuid>58f081cd-09f9-4a4a-9f37-5d3bc687bf53</uuid> <memory unit=’KiB’>908288</memory> <os> <type>exe</type> <init>/bin/sh</init> </os> ... Definition LXC OS Container: <os> <type>exe</type> <init>/sbin/init</init> </os> ... <filesystem type=’mount’ accessmode=’passthrough’> <source dir=’/srv/lxc-sles12’/> <target dir=’/’/> </filesystem> B1 Systems GmbH Docker und Virtualisierung 13 / 34
  • 14. Docker – Eigenschaften Applikationsfokus: „Build, Ship and Run Applications“ nutzt Container-Technologien (LXC/libcontainer) gute Isolation der Container Bereitstellung: Sekunden – Minuten Größe: MBs B1 Systems GmbH Docker und Virtualisierung 14 / 34
  • 15. Definition einer Docker-App: FROM debian:latest RUN apt-get install -y emacs RUN apt-get install -y apache2 EXPOSE 80 ADD www /var/www/site CMD /usr/sbin/apache2ctl -D FOREGROUND build und run der Docker-App: $ docker build -t baumann/myapache . $ docker run -P -d baumann/myapache B1 Systems GmbH Docker und Virtualisierung 15 / 34
  • 16. Docker Layered Images build eines Docker Layered Image: $ docker build -t baumann/myapache Uploading context 10.24 kB Uploading context Step 1 : FROM debian ---> bbba202fe96b Step 2 : CMD apt-get install emacs ---> Using cache ---> 31182097be13 Step 3 : CMD apt-get install ap.. ---> Using cache ---> 2a5ffc17324d .... Successfully built 2a5ffc17324d B1 Systems GmbH Docker und Virtualisierung 16 / 34
  • 17. B1 Systems GmbH Docker und Virtualisierung 17 / 34
  • 18. Docker – Build, Ship and Run Applications B1 Systems GmbH Docker und Virtualisierung 18 / 34
  • 19. Container Execution Environments Docker kann derzeit drei 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 libvirt-lxc LXC-Treiber mittels libvirt 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 und Virtualisierung 19 / 34
  • 20. B1 Systems GmbH Docker und Virtualisierung 20 / 34
  • 21. 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 und Virtualisierung 21 / 34
  • 22. libcontainer 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 und Virtualisierung 22 / 34
  • 23. 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 und Virtualisierung 23 / 34
  • 24. CGroups 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 und Virtualisierung 24 / 34
  • 25. 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 Prozesse im Chroot-Verzeichnis können 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 und Virtualisierung 25 / 34
  • 26. 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 und Virtualisierung 26 / 34
  • 27. Bestandteile – Das Docker-Universum B1 Systems GmbH Docker und Virtualisierung 27 / 34
  • 28. Definition einer Docker-App: FROM debian:latest RUN apt-get install -y emacs RUN apt-get install -y apache2 EXPOSE 80 ADD www /var/www/site CMD /usr/sbin/apache2ctl -D FOREGROUND build und run der Docker-App: $ docker build -t baumann/myapache . $ docker run -P -d baumann/myapache B1 Systems GmbH Docker und Virtualisierung 28 / 34
  • 29. Docker Layered Images build eines Docker Layered Image: $ docker build -t baumann/myapache Uploading context 10.24 kB Uploading context Step 1 : FROM debian ---> bbba202fe96b Step 2 : CMD apt-get install emacs ---> Using cache ---> 31182097be13 Step 3 : CMD apt-get install ap.. ---> Using cache ---> 2a5ffc17324d .... Successfully built 2a5ffc17324d B1 Systems GmbH Docker und Virtualisierung 29 / 34
  • 30. Images, Container und Registries Docker Images Read-Only-Templates 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 und Virtualisierung 30 / 34
  • 31. 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 und Virtualisierung 31 / 34
  • 32. Docker Projekte Docker ist kollaborativ, modular und erweiterbar: Atomic atomar aufgebautes Hostsystem für Docker-Container CoreOS minimales Linux als Container-Betriebssystem Machine Docker Rollout Werkzeug Swarm nativer Docker Cluster Compose Multi Tier Applikations Rollout boot2docker Docker auf MacOS und Windows Packer Erstellung fertiger Images mittels Templates . . . B1 Systems GmbH Docker und Virtualisierung 32 / 34
  • 33. Docker und OpenStack Docker im OpenStack Kontext: novadocker Docker als Backend in Nova heat docker ressource Docker Einbindung in Heat Dockenstack Devstack auf Docker Kolla OpenStack in Docker Magnum Container Orchestration in OpenStack . . . B1 Systems GmbH Docker und Virtualisierung 33 / 34
  • 34. 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