docker
«Tour d'horizon»

Julien Fusco
 github.com/Koin
 twitter.com/PKoin

Par qui ?

Docker Inc., anciennement dotCloud.

October 29, 2013

Fournisseur de PaaS «Platform as a Service»

Pourquoi ?

«Platform as a Service»

«The Matrix of Hell» The matrix of Hell

Quelles solutions ?

Machines virtuelles : Xen, VirtualBox, VMware,...

Conteneurs : LXC, OpenVZ,...

LXC, «Linux Containers»

Système de cloisonnement : chroot on steroids!

Partagent le même noyau

Virtualisent l'env d'exécution (Processeur, mémoire, réseau, système de fichier, ...) et non pas de la machine

conteneur == virtualisation légère != machine virtuelle

LXC, «Linux Containers»

Merci les namespaces !
Isolation des processus, points de montage, interfaces réseaux, utilisateurs, ...

Merci les cgroups !
Limitation des ressources (RAM, CPU) pour un groupe de processus

AUFS, «Another Union File System»

Fusion de deux hiérarchies de répertoires :

HALP :/

i have no idea what i'm doing

DOCKER FTW!

write once run everywhere

Quelques stats

Installation

Alternatives

Linux

Ubuntu 12.04 (LTS) (64-bit)

$ sudo apt-get install linux-image-generic-lts-raring linux-headers-generic-lts-raring
$ sudo reboot
$ # Coffeeeee time!
$ sudo sh -c "wget -qO- https://get.docker.io/gpg | apt-key add -"
$ sudo sh -c "echo deb http://get.docker.io/ubuntu docker main\
> /etc/apt/sources.list.d/docker.list"
$ sudo apt-get update
$ sudo apt-get install lxc-docker

Mac OSX

LXC non disponible

boot2docker + Docker OS X Client

$ brew install boot2docker
$ boot2docker init
$ boot2docker up
$ echo "export DOCKER_HOST='tcp://localhost:4243'" >> ~/.zshrc
$ for i in {49000..49900}; do
    VBoxManage modifyvm "boot2docker-vm" --natpf1 "tcp-port$i,tcp,,$i,,$i";
    VBoxManage modifyvm "boot2docker-vm" --natpf1 "udp-port$i,udp,,$i,,$i";
  done

Getting started

Let's try!

$ docker run ubuntu /bin/echo hello world

Que fait docker ?

Dockerfiles

A quoi ça sert ?

« C'est un cahier listant les actions à réaliser pour construire une image »

Exemple

FROM ubuntu:latest

# Add 10gen official apt source to the sources list
RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10
RUN echo 'deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' | tee /etc/apt/sources.list.d/10gen.list

# Install MongoDB
RUN apt-get update
RUN apt-get install mongodb-10gen

# Create the MongoDB data directory
RUN mkdir -p /data/db

ENTRYPOINT ["usr/bin/mongod"]

Exécution

$ docker build -t PKoin/mongodb .
$ docker run -d -p 49100:27017 PKoin/mongodb

magic

Questions
Thank you

Julien Fusco
 github.com/Koin
 twitter.com/PKoin