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?
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