Introduction et utilisation en production
Alexandre Di Pino - 10 mars 2015
Sommaire
• Présentation
• Exemple d’utilisation
• Retour d’experience
• À venir
/me
• Alexandre Di Pino
• Ingénieur R&D @ InSimo
• Mail : alexandre.dipino@gmail.com
• Twitter : @a_dipino
Présentation
Haut niveau
• Utilisation de LXC et cgroups introduit par
le kernel 2.6.24 (Noyau 3.10 minimum)
• Tourne sur le kernel système
• Utilise très peu de ressource face à un VM
• Utilisation de snapshots
• Open source (Apache 2)
Ne fonctionne que
sous linux, pour le
moment
Exemple d’utilisation
Je travaille sous Windows ou MacOS ?
No problem !
• 30Mo
• Docker prêt à l’utilisation
• Utilise Virtual Box
• Partage facile des fichiers entre la VM et l’hôte
Boot2docker :
Sous Linux
- curl -sSL https://get.docker.com/ubuntu/ | sudo sh
- On teste :
sudo docker run -i -t ubuntu bash
Exemple 1 : NGINX et MYSQL
sudo docker run -d -P --name web nginx
sudo docker run -d -e MYSQL_ROOT_PASSWORD=toto -P --name
database mysql
Exemple 2 : Ajoutons des fichiers
• -v mon/dossier/local:mon/dossier/dans/le/conteneur:ro
Règle d’or : une app
par container
Exemple 3 : Les links
docker run -e MYSQL_ROOT_PASSWORD=toto --name db -v /home/
mysql/:/var/lib/mysql/ -d mysql
docker run --name nginx --link db:mysql -v /home/wp/:/var/www/html/
-p 80:80 -d nginx
Les volumes
• -v mon/dossier/local:mon/dossier/dans/le/conteneur
• --volumes-from web
C’est bien beau tout
ça mais je fais quoi
si aucune des
images ne
correspond à mes
besoins?
Les dockerfiles
• Construire des images à partir d’un fichier
• docker build
• Format : INSTRUCTION arguments
• FROM, MAINTAINER, RUN, CMD, EXPOSE, ENV, ADD, COPY,
ENTRYPOINT, VOLUME, USER, WORKDIR
• Créer une « base image »
Les bonnes pratiques
• Ne pas installer de packages inutiles
• RUN apt-get update && apt-get install -y
Retour d’experience
Sources :
- svn
- git
Fichiers :
- Owncloud
Autres :
- Site
- Trac
- Tests
Serveur
À venir …
Docker Compose
• Création d’applications complexe
• Fichier de configuration docker-compose.yml
• Commande : docker-composer up
Docker Machine (beta)
• Création d’host sur votre ordinateur, le cloud ou votre propre data
center
• docker-machine create --driver virtualbox dev
• docker $(docker-machine config dev) run busybox
• Drivers disponible pour la plupart des services clouds (AWS, Digital
Ocean, Google Compute Engine, Azure, OpenStack, Rackspace ou
VMWare )
Docker Swarm (beta)
• Cluster natif pour docker
• Transforme pool d’hosts Docker en un seul virtuel
• docker pull swarm
Un conseil avant de finir
Questions ?

Introduction à Docker et utilisation en production /Digital apéro Besançon [10/03/2015]

  • 1.
    Introduction et utilisationen production Alexandre Di Pino - 10 mars 2015
  • 2.
    Sommaire • Présentation • Exempled’utilisation • Retour d’experience • À venir
  • 3.
    /me • Alexandre DiPino • Ingénieur R&D @ InSimo • Mail : alexandre.dipino@gmail.com • Twitter : @a_dipino
  • 4.
  • 9.
    Haut niveau • Utilisationde LXC et cgroups introduit par le kernel 2.6.24 (Noyau 3.10 minimum) • Tourne sur le kernel système • Utilise très peu de ressource face à un VM • Utilisation de snapshots • Open source (Apache 2) Ne fonctionne que sous linux, pour le moment
  • 10.
  • 11.
    Je travaille sousWindows ou MacOS ? No problem ! • 30Mo • Docker prêt à l’utilisation • Utilise Virtual Box • Partage facile des fichiers entre la VM et l’hôte Boot2docker :
  • 12.
    Sous Linux - curl-sSL https://get.docker.com/ubuntu/ | sudo sh - On teste : sudo docker run -i -t ubuntu bash
  • 13.
    Exemple 1 :NGINX et MYSQL sudo docker run -d -P --name web nginx sudo docker run -d -e MYSQL_ROOT_PASSWORD=toto -P --name database mysql
  • 14.
    Exemple 2 :Ajoutons des fichiers • -v mon/dossier/local:mon/dossier/dans/le/conteneur:ro
  • 15.
    Règle d’or :une app par container
  • 16.
    Exemple 3 :Les links docker run -e MYSQL_ROOT_PASSWORD=toto --name db -v /home/ mysql/:/var/lib/mysql/ -d mysql docker run --name nginx --link db:mysql -v /home/wp/:/var/www/html/ -p 80:80 -d nginx
  • 17.
    Les volumes • -vmon/dossier/local:mon/dossier/dans/le/conteneur • --volumes-from web
  • 18.
    C’est bien beautout ça mais je fais quoi si aucune des images ne correspond à mes besoins?
  • 19.
    Les dockerfiles • Construiredes images à partir d’un fichier • docker build • Format : INSTRUCTION arguments • FROM, MAINTAINER, RUN, CMD, EXPOSE, ENV, ADD, COPY, ENTRYPOINT, VOLUME, USER, WORKDIR • Créer une « base image »
  • 20.
    Les bonnes pratiques •Ne pas installer de packages inutiles • RUN apt-get update && apt-get install -y
  • 21.
  • 22.
    Sources : - svn -git Fichiers : - Owncloud Autres : - Site - Trac - Tests Serveur
  • 24.
  • 25.
    Docker Compose • Créationd’applications complexe • Fichier de configuration docker-compose.yml • Commande : docker-composer up
  • 26.
    Docker Machine (beta) •Création d’host sur votre ordinateur, le cloud ou votre propre data center • docker-machine create --driver virtualbox dev • docker $(docker-machine config dev) run busybox • Drivers disponible pour la plupart des services clouds (AWS, Digital Ocean, Google Compute Engine, Azure, OpenStack, Rackspace ou VMWare )
  • 27.
    Docker Swarm (beta) •Cluster natif pour docker • Transforme pool d’hosts Docker en un seul virtuel • docker pull swarm
  • 28.
  • 29.