32
0

Peter Daum - coders-kitchen.comcoders-kitchen.com/wp-content/uploads/2014/07/Docker-JUG-DO.pdf · Serf - Service - Lookup Tooling Shipyard - UI um komplette Anwendungsetups mit Docker

  • Upload
    haminh

  • View
    222

  • Download
    0

Embed Size (px)

Citation preview

0

The linux container enginePeter Daum

Über michPeter DaumEntwickler seit 13 JahrenJava Developer @ tyntecJava EE / Spring im OSS / BSSTwitter - @MrPaeddahBlog - www.coders-kitchen.com

AgendaDocker?!Was ist ein ContainerTraditionelle VM vs. ContainerDocker - BasicsDocker - AdvancedUse casesWarum Docker?Die dunkle SeiteTooling

Docker?!Docker ist eine Software zur Definition und Verwaltung

leichtgewichtiger,portablerund selbst-beschreibender (self-sufficient) Linux Container "jeder" Anwendung.

Was ist ein Container?Eine Umgebung mit

shared OS (linux running in linux),isolierten Prozessen,isoliertem Netzwerk und anderen Ressourcen sowiemit anderen Containern geteilten Bibliotheken/Binaries (fallsanwendbar)

Keine VM

Container vs VMAllgemeiner Überblick

Kleiner "Footprint"sehr kurze BootzeitBootprozesse

VM - Normaler BootprozessContainer - Kein Bootprozess

Unterstützte OSVM - fast alleContainer - Nur Linux mit Kernel >= 3.8

Container vs VMUnterschiede zur Laufzeit

Container vs VMMultiple Instanzen und Änderungen

Leichtgewichtiger Start mehrere Instanzen des selben Images

Bei Änderungen muss nur das Delta zum Basisimagebereitgestellt werden.

Docker - BasicsImage

Template für ContainerGespeichert in einem RepositoryLokal oder RemoteDefiniert, normalerweise, nur das Deltagegenüber einem Basisimage

Container - laufendes Image

Erzeugen eines ImagesInteraktivDockerfilePacker...

Bereitstellen eines ImagesInteractive

peter ~>docker run -i -t centos:6.4 /bin/bashbash-4.1# lsbin dev home lib64 mnt proc sbin srv tmp varboot etc lib media opt root selinux sys usrbash-4.1# rpm -Uvh http://..........bash-4.1# exitpeter ~>

Bereitstellen eines ImagesDockerfile

FROM centos:6.4

RUN rpm -Uvh http://download.fedoraproject.org/pub/ ....# Install Node.js and npmRUN yum install -y npm

# Bundle app sourceADD src /srcRUN cd /src; npm installEXPOSE 8080CMD ["node", "/src/index.js"]

Bereitstellen eines ImagesPacker

Generisches LXC provisioningUnterstützt nicht alle features einesDockerfile, bspw. exposed ports

Docker - AdvancedLinkingVolume-Resourcen'Architektur'-Muster

Container InteraktionLinking

Verbinden der Container via Host/..

Container InteraktionLinking

Direkte Netzwerkverbindung der Container

Container InteraktionVolumen-Resourcen

sind spezielle Verzeichnisse

die zwischen Container geteilt werden könnenÄnderungen werden sofort durchgeführtsind vom Update eines Images nicht betroffenexistieren solange, wie mindestens ein Container sie benutzt.

Container InteraktionVolumen-Resourcen - Beispiel

Logfiles sind pro Container verfügbar

Container InteraktionVolumen-Resourcen - Beispiel

Logfiles sollen an zentraler Stelle gesammelt werden

Container InteraktionVolumen-Resourcen - Beispiel

Logfiles sind in einem zentralen Log-Container verfügbar

'Architektur' MusterCross-Host linking via Ambassador Containers

Data-only container

Use casesTesting

separierte Testresourcenseparierte CI buildsCI build slave nodes on demand erzeugen

Continuous deploymentDeployment und Skalierung von web apps,Datenbanken und Backend servicesPaaSLokale separate Spielwiese

Warum Docker?DEV

build oncerun "everywhere"die exakt "gleiche" Umgebung für testing, staging und production ist möglich

OPS

Konfiguration der UmgebungKonfiguration der Verbindungenim Fehlerfall ist es möglich dem Entwickler die aktuelle Umgebung zu geben

Die dunkle SeiteHausputz

Läuft nur unter Linux

kein normaler Bootprozess

Tools and CoBoot2Docker - minimales virtual machine image für DockerCoreOS - Linux distribution für verteilte Umgebungen mitDockerFig - Management von komplexen ScenariosSerf - Service - Lookup ToolingShipyard - UI um komplette Anwendungsetups mit Docker zuadministrieren

Linksdocker.io

Vielen Dank für EureAufmerksamkeit!