Docker in Real Life*

* from a student

Par Pierre Zemb / @PierreZ

+Me

Pierre Zemb
Etudiant ingénieur à l'ISEN Brest

  • Ancien stagiaire/alternant Arkéa
  • Futur stagiaire/alternant OVH

https://pierrezemb.fr
@PierreZ

Le programme

  • Ma découverte de Docker
  • Mon utilisation personnelle de Docker
  • L'utilisation de Docker dans le cadre d'un projet scolaire

Slides dispo sur http://slides.pierrezemb.fr/

Tout a commencé ici !

Dockers zero to hero by Nicolas De Loof

Mon sentiment après

L'équipe Sysadmin

1ère réponse

Les conteneurs ne sont pas nouveaux !

  • 2000: BSD Jails
  • 2004: Solaris Zones
  • 2008: LXC (Linux Containers)
  • 20 mars 2013: Docker

Bare-metal, Docker Containers, and Virtualization: The Growing Choices for Cloud Applications

Qu'apporte Docker ?

  • Simplicité d'utilisation
  • Construction d'une image à partir d'un DockerFile
  • Ajout d'un registry pour ses images
  • API REST
  • ...

Retour à l'équipe Sysadmin

2ème réponse

DevOps: côté développeur

Le conteneur utilisé en développement aura le même comportement qu'en production !

Comment savoir si votre entreprise est DevOps

DevOps: côté Ops

Accéléreration du déploiement des applications

Comment savoir si votre entreprise est DevOps

La condition

Retour à l'équipe Sysadmin

3ème réponse

Les défauts de Docker: La sécurité

Beaucoup de travail a été fait, il en reste encore...

Il existe des failles au niveau:

  • de Docker lui-même
  • du noyau

Les défauts de Docker: son monolithisme

Au départ: Added 'Standard Container manifesto' to README

A l'arrivée: remove original shipping containers 'manifesto'

Les défauts de Docker: son monolithisme

Un seul binaire client/serveur gère à lui tout seul:

  • La construction des images
  • La récupération des images
  • La gestions des volumes
  • La construction des sous-couches du FileSystem
  • L'isolation des process
  • La surcouche réseau (NAT, proxy réseau)
  • ...

Projet à regarder de près: CoreOS+Rocket

Les défauts de Docker: le réseau

Doc de Docker: Network Configuration

Synthèse de la conversation

Avantages de Docker:

  • Une approche plus souple
  • Un moyen de communication entre Dev et Ops
  • Une modernisation des LXC
  • Il permet également d'éviter des produits Windows

Synthèse de la conversation

Quelques limites à connaitre:

  • Le binaire Docker
  • La gestion du réseau
  • Boot2docker

La conséquence

La conséquence

From DockerCon's Keynote

La conséquence

Docker sur Windows

Docker on Microsoft Cloud Plateform

Mon utilisation de Docker

Mon utilisation de Docker : serveur OVH

Un conteneur par application

  • Nginx en frontal de mes conteneurs
  • Un conteneur par application
    • OpenVPN
    • Shout (client IRC)
    • Ghost
    • Cadvisor

Mon utilisation de Docker: Raspberry Pi

Plateforme de test:

  • Serveur Web
  • Systèmes distribués en Go
  • Hadoop
  • OpenVPN

Mon utilisation de Docker: un exemple

Mon utilisation de Docker: un exemple

Backend REST écrit en Go

  • GET sur / renvoie le top 5 des scores
  • POST sur / envoie un score

Le tout en moins de 79 lignes

Mon utilisation de Docker: un exemple


FROM golang
MAINTAINER PierreZ

ADD . /go/src/github.com/pierrez/ElementZ-server

RUN go get github.com/martini-contrib/binding
RUN go get github.com/go-martini/martini
RUN go install github.com/github.com/pierrez/ElementZ-server

ENTRYPOINT /go/bin/ElementZ-server

EXPOSE 3000
					

Mon utilisation de Docker: un exemple


#!/bin/bash

set -e;

docker build -t elementz_image .;

docker run -d -p 3000:3000 --name elementz elementz_image;
					

Mon utilisation de Docker: un exemple

Résultat du GET sur /

Projet scolaire: SeaTestBase

SeaTestBase

Actuellement

Serveur OVH (SoYouStart) avec:

  • Joomla
  • Zabbix
  • ERP
  • Différents projets scolaires Web

(Très) prochainement

Serveur RunAbove

  • Remplacement de Joomla par WordPress
  • Remplacement de Zabbix par InfluxDB
  • Migration de l'ERP
  • Ajout d'ElasticSearch

SeatestBase: Powered by Docker

Les avantages:

  • Impact de la virtualisation réduit
  • Gain de simplicité
  • Très peu de configuration réseau à gérer
  • Facilité de déploiement

La simplicité de Docker

Besoin d'une image pour InfluxDB ?

La simplicité de Docker

Besoin d'une image pour InfluxDB ?

La simplicité de Docker

Besoin d'une image pour InfluxDB ?

SeatestBase: Quelle image choisir ?

phusion/baseimage-docker

Avantages:

  • Processus d'initialisation correct
  • Problème avec APT résolu
  • Possibilité de SSH
  • syslog-ng/log rotate

SeatestBase: la gestion des logs


docker run -v /var/log/nom_de_mon_super_conteneur:/var/log
					

SeatestBase: Systemd en orchestrateur

vim /etc/systemd/dockerat.service


[Unit]
Description=%i service in a docker
After=docker.service
Requires=docker.service

[Service]
Restart=always
ExecStart=/usr/bin/docker start -a %i
ExecStop=/usr/bin/docker stop -t 2 %i

[Install]
WantedBy=local.target
					

systemctl enable docker@nom_de_mon_super_conteneur
					

By Thibaut Charles

Merci de votre attention !

Avez-vous des questions ?

Slides dispo sur http://slides.pierrezemb.fr/