Docker, WTF?!


11.02.2014

Wer bin ich?


Jens Nauber
Softwareentwickler und DevOps
viele Fahrräder, viel Kaffee

@_jensen
+JensNauber


Agenda


Was ist Docker?
Welche Problem kann Docker lösen?
Vorteile?
Was kann ich mit Docker anfangen?

Das Problem


Eine Lösung



Was ist Docker?

  • Container Virtualization
    • kapselt eine Applikation in einen Container
    • "build once, run anywhere"-Paradigma
    • läuft isoliert und unabhängig
  • kein VM-Hypervisor, Virtual Environment (VE)
  • Docker API
    • Docker Daemon
    • Docker Client


Was ist Docker?

  • "Linux chroot on steroids"
  • nutzt Hardware und Kernel des Gastsystems
  • keine garantierten Ressourcen
  • Technologie
    • LXC (Linux Containers)
    • cgroups und kernel namespace
    • Device Mapper
  • läuft auf den meisten Linux-Distributionen (K>2.6.32)
  • Mac OS X (boot2docker, Vagrant), Windows (Vagrant)

BootFS vs. ROOTFS

Example: Debian

Container

One Base Image, Multiple container

Multiple Base Images


Welche Probleme Kann Docker Lösen?

  • Entwickler kann sich auf seine Applikation konzentrieren
  • Admin/Ops kann sich auf die Infrastruktur konzentrieren
  • verschiedene Versionen einer Applikation
    • Testing
    • Abhängigkeiten
    • Versionierung
  • vereinfachtes Deployment ("Golden Image")
  • Einbinden in vorhandene Systeme


Vorteile

  • leichtgewichtiger, transportabler Container 
    • Ubuntu Base Image (150 MB)
  • weniger Probleme mit Abhängigkeiten
  • Automatisierung von Tests, Integration und Packaging
  • freie Wahl der Infrastruktur (dediziert, virtuell, Cloud)
  • Verteilung über Registry-Server
  • Kostenfaktor?
  • Schnelligkeit?

Docker API - Image Workflow

search - Image-Suche im Docker-Registry-Server (index.docker.io)
 box:~$ docker search ubuntu
pull - Herunterladen und Bereitstellen eines Images
 box:~$ docker pull ubuntu:12.04
run - Kommando innerhalb des Images ausführen
 box:~$ docker run ubuntu:12.04 apt-get install -y mysql-server 
commit - Änderungen eines Containers übernehmen
 box:~$ docker commit -m="MySQL installiert" e7cb698ad0f3 jnauber/mysql
push - geändertes Image ins Repository übertragen
 box:~$ docker push jnauber/mysql

Dockerfile

  • Automatisierung von Schritten
 box:~$ docker build -t jnauber/mysql2 - < Dockerfile
# Custom MySQL Server image
# jnauber/mysql2
#
# VERSION	1.0

FROM ubuntu:12.04

# Install system updates
RUN apt-get update -y
RUN apt-get upgrade -y

# Install MySQL Server
RUN apt-get install -y mysql-server

EXPOSE 3306


Was kAnn man mit Docker

sonst Noch machen?

  • eigenes PaaS (Dokku)
  • privates Registry-Repository
  • Scripting mit Ansible, Puppet, Vagrant, etc.
    • Orchestration
    • Deployment
    • Testing
  • Virtual Server on Raspberry PI


RESSOURCEN


http://www.docker.io
https://www.docker.io/gettingstarted/

@docker
https://github.com/dotcloud/docker/
https://plus.google.com/u/0/communities/108146856671494713993


Danke


Fragen?

Docker, WTF?!

By Jens Nauber

Docker, WTF?!

Kurze Einführung in Docker

  • 1,377