Evolution des serveurs et présentation de Docker

Page 1 sur 33Lecteur de document UniversityLib

Evolution des serveurs et présentation de Docker

Virtualization and Containerization Technologies · notes

Voir tous les documents en systèmes d'exploitation et cloud

Évolution des serveurs Comparatif des solutions Présentation de Docker Fonctionnement basique de Docker Et ensuite Conclusion

Retour d’expérience sur 10 ans de virtualisation et présentation de Docker

Gauthier Catteau

Ingénieur Systèmes et Réseaux Responsable Infrastructure Système de l’Académie de Lille. [email protected]

13 février 2014 Journée Thématique Min2rien http://www.min2rien.fr/

This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License.

Gauthier Catteau

Docker

Évolution des serveurs Comparatif des solutions Présentation de Docker Fonctionnement basique de Docker Et ensuite Conclusion

Lignes directrices

1 Évolution des serveurs

2 Comparatif des solutions

3 Présentation de Docker

4 Fonctionnement basique de Docker

5 Et ensuite

Gauthier Catteau

Docker

Évolution des serveurs Comparatif des solutions Présentation de Docker Fonctionnement basique de Docker Et ensuite Conclusion

Introduction

Voila maintenant plus de 10 ans que nous virtualisons notre infrastructure. Vmware, Proxmox et maintenant Docker, explication sur cette évolution et découverte du petit dernier.

Gauthier Catteau

Docker

Évolution des serveurs Comparatif des solutions Présentation de Docker Fonctionnement basique de Docker Et ensuite Conclusion

Évolution des serveurs

Lignes directrices

1 Évolution des serveurs

Évolution des serveurs

2 Comparatif des solutions

3 Présentation de Docker

4 Fonctionnement basique de Docker

5 Et ensuite

Gauthier Catteau

Docker

Évolution des serveurs Comparatif des solutions Présentation de Docker Fonctionnement basique de Docker Et ensuite Conclusion

Évolution des serveurs

Répartition des serveurs physiques

80

60

40

20

0

Physique

Proxmox

Vmware ESX

2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014

Gauthier Catteau

Docker

Évolution des serveurs Comparatif des solutions Présentation de Docker Fonctionnement basique de Docker Et ensuite Conclusion

Évolution des serveurs

Répartition des serveurs virtuels

400

300

200

100

0

Vmware

OpenVZ

Docker

2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2003

Gauthier Catteau

Docker

Évolution des serveurs Comparatif des solutions Présentation de Docker Fonctionnement basique de Docker Et ensuite Conclusion

La solution VMware La solution Proxmox (Openvz) Conclusion sur ces 2 solutions Évolutions possibles

Lignes directrices

1 Évolution des serveurs

2 Comparatif des solutions

La solution VMware La solution Proxmox (Openvz) Conclusion sur ces 2 solutions Évolutions possibles

3 Présentation de Docker

4 Fonctionnement basique de Docker

5 Et ensuite

Gauthier Catteau

Docker

Évolution des serveurs Comparatif des solutions Présentation de Docker Fonctionnement basique de Docker Et ensuite Conclusion

La solution VMware La solution Proxmox (Openvz) Conclusion sur ces 2 solutions Évolutions possibles

La solution Vmware est pour l’instant incontournable pour les raisons suivantes :

Leader du marché.

Solution robuste et fiable.

Migration à chaud efficace.

Excellente isolation des VM (NSA ?).

Inconvenients de la solution

Gestion relativement lourde des machines virtuelles complètes (vmwaretools).

Coût de licence élevé par CPU (> matériel).

Nécessité d’un SAN pour une utilisation optimum.

Gauthier Catteau

Docker

Évolution des serveurs Comparatif des solutions Présentation de Docker Fonctionnement basique de Docker Et ensuite Conclusion

La solution VMware La solution Proxmox (Openvz) Conclusion sur ces 2 solutions Évolutions possibles

La solution Vmware est pour l’instant incontournable pour les raisons suivantes :

Leader du marché.

Solution robuste et fiable.

Migration à chaud efficace.

Excellente isolation des VM (NSA ?).

Inconvenients de la solution

Gestion relativement lourde des machines virtuelles complètes (vmwaretools).

Coût de licence élevé par CPU (> matériel).

Nécessité d’un SAN pour une utilisation optimum.

Publicité

Gauthier Catteau

Docker

Évolution des serveurs Comparatif des solutions Présentation de Docker Fonctionnement basique de Docker Et ensuite Conclusion

La solution VMware La solution Proxmox (Openvz) Conclusion sur ces 2 solutions Évolutions possibles

Dans notre cas, Proxmox est une alternative intéressante pour plusieurs raisons :

Performance proche de la machine physique.

Solution facile à mettre en place.

Modification possible des fichiers des VM éteintes.

Sauvegarde et PRA plus rapides.

Virtualisation par conteneur. Démarrage des VM très rapide.

Inconvenients de la solution

Migration à chaud perfectible.

Pas de snapshot par VM.

Solution flexible mais un peu artisanale.

Gauthier Catteau

Docker

Évolution des serveurs Comparatif des solutions Présentation de Docker Fonctionnement basique de Docker Et ensuite Conclusion

La solution VMware La solution Proxmox (Openvz) Conclusion sur ces 2 solutions Évolutions possibles

Dans notre cas, Proxmox est une alternative intéressante pour plusieurs raisons :

Performance proche de la machine physique.

Solution facile à mettre en place.

Modification possible des fichiers des VM éteintes.

Sauvegarde et PRA plus rapides.

Virtualisation par conteneur. Démarrage des VM très rapide.

Inconvenients de la solution

Migration à chaud perfectible.

Pas de snapshot par VM.

Solution flexible mais un peu artisanale.

Gauthier Catteau

Docker

Évolution des serveurs Comparatif des solutions Présentation de Docker Fonctionnement basique de Docker Et ensuite Conclusion

La solution VMware La solution Proxmox (Openvz) Conclusion sur ces 2 solutions Évolutions possibles

Dans quels cas utiliser VMware

Serveurs avec applicatif nécessitant un support de l’éditeur.

Serveurs ne pouvant tolérer un arrêt de production.

Dans quels cas utiliser Proxmox

Services redondés derrière des répartiteurs de charges.

Ou services moins critiques.

Gauthier Catteau

Docker

Évolution des serveurs Comparatif des solutions Présentation de Docker Fonctionnement basique de Docker Et ensuite Conclusion

La solution VMware La solution Proxmox (Openvz) Conclusion sur ces 2 solutions Évolutions possibles

Dans quels cas utiliser VMware

Serveurs avec applicatif nécessitant un support de l’éditeur.

Serveurs ne pouvant tolérer un arrêt de production.

Dans quels cas utiliser Proxmox

Services redondés derrière des répartiteurs de charges.

Ou services moins critiques.

Gauthier Catteau

Docker

Évolution des serveurs Comparatif des solutions Présentation de Docker Fonctionnement basique de Docker Et ensuite Conclusion

La solution VMware La solution Proxmox (Openvz) Conclusion sur ces 2 solutions Évolutions possibles

Étude des évolutions possibles

Ces deux solutions fonctionnent mais la charge d’exploitation reste élevée pour quatre personnes. Les serveurs virtuels sont livrés dans la journée, mais il reste souvent beaucoup de réglages à faire après livraison. D’où la recherche d’une solution :

Facile à mettre en œuvre.

Automatisable au maximum.

Identique pour le Développement, la Qualif, l’Expérimentation et la Production.

De virtualisation applicative.

Bref une solution Cloud.

Gauthier Catteau

Docker

Évolution des serveurs Comparatif des solutions Présentation de Docker Fonctionnement basique de Docker Et ensuite Conclusion

Docker c’est quoi ? Origine de Docker Sur quoi fonctionne Docker LinuX Conteneurs (LXC) Control Groups et Namespaces Installation : Ubuntu Linux 12.04.3

Lignes directrices

1 Évolution des serveurs

2 Comparatif des solutions

3 Présentation de Docker

Docker c’est quoi ? Origine de Docker Sur quoi fonctionne Docker LinuX Conteneurs (LXC) Control Groups et Namespaces Installation : Ubuntu Linux 12.04.3

4 Fonctionnement basique de Docker

5 Et ensuite

Gauthier Catteau

Docker

Évolution des serveurs Comparatif des solutions Présentation de Docker Fonctionnement basique de Docker Et ensuite Conclusion

Docker c’est quoi ? Origine de Docker Sur quoi fonctionne Docker LinuX Conteneurs (LXC) Control Groups et Namespaces Installation : Ubuntu Linux 12.04.3

Docker c’est quoi ?

Docker est un projet open-source créé pour générer rapidement des conteneurs portables pour toutes sortes d’applications. Le même conteneur peut être utilisé pour les développements, les tests, sur un portable, mis à l’échelle en production dans une VM, Openstack ou un cloud public ...

Gauthier Catteau

Docker

Évolution des serveurs Comparatif des solutions Présentation de Docker Fonctionnement basique de Docker Et ensuite Conclusion

Docker c’est quoi ? Origine de Docker Sur quoi fonctionne Docker LinuX Conteneurs (LXC) Control Groups et Namespaces Installation : Ubuntu Linux 12.04.3

Origine et première version

Docker est une réécriture du code de dotCloud PaaS (Plateform As A Service).

Version d’origine en Python, maintenant réécrite en Go.

C’est un projet jeune (janvier 2013), première release public 0.1 le 27 mars 2013.

Version 0.8 en février 2014.

Utilisé dans plus de 150 projets (OpenStack, CoreOS, Dokku, OpenShift...)

Dans le TOP10-2013 sur 10 millions de projet GitHub.

Gauthier Catteau

Docker

Évolution des serveurs Comparatif des solutions Présentation de Docker Fonctionnement basique de Docker Et ensuite Conclusion

Docker c’est quoi ? Origine de Docker Sur quoi fonctionne Docker LinuX Conteneurs (LXC) Control Groups et Namespaces Installation : Ubuntu Linux 12.04.3

Sur quoi est basé Docker ?

LinuX Conteneurs (LXC)

Control Groups et Namespaces

AUFS ou Btrfs (bientôt ZFS)

API HTTP client-serveur

Publicité

Gauthier Catteau

Docker

Évolution des serveurs Comparatif des solutions Présentation de Docker Fonctionnement basique de Docker Et ensuite Conclusion

Docker c’est quoi ? Origine de Docker Sur quoi fonctionne Docker LinuX Conteneurs (LXC) Control Groups et Namespaces Installation : Ubuntu Linux 12.04.3

LinuX Conteneurs (LXC)

LXC permet :

De lancer un linux dans un linux. L’isolation des processus et de l’environnement d’exécution.

Vu de dedans c’est comme une VM.

Vu de dehors les process s’exécutent normalement.

Pourquoi des Conteneurs ?

Vitesse : Démarrage dans la seconde.

Empreinte : 100-1000 conteneurs par machine. Peu d’espace disque nécessaire.

Gauthier Catteau

Docker

Évolution des serveurs Comparatif des solutions Présentation de Docker Fonctionnement basique de Docker Et ensuite Conclusion

Docker c’est quoi ? Origine de Docker Sur quoi fonctionne Docker LinuX Conteneurs (LXC) Control Groups et Namespaces Installation : Ubuntu Linux 12.04.3

LinuX Conteneurs (LXC)

LXC permet :

De lancer un linux dans un linux. L’isolation des processus et de l’environnement d’exécution.

Vu de dedans c’est comme une VM.

Vu de dehors les process s’exécutent normalement.

Pourquoi des Conteneurs ?

Vitesse : Démarrage dans la seconde.

Empreinte : 100-1000 conteneurs par machine. Peu d’espace disque nécessaire.

Gauthier Catteau

Docker

Évolution des serveurs Comparatif des solutions Présentation de Docker Fonctionnement basique de Docker Et ensuite Conclusion

Docker c’est quoi ? Origine de Docker Sur quoi fonctionne Docker LinuX Conteneurs (LXC) Control Groups et Namespaces Installation : Ubuntu Linux 12.04.3

Control Groups et Namespaces

Le noyau Linux implémente des fonctionnalités permettant de limiter, d’isoler et de contrôler les ressources suivantes :

CPU

Mémoire

I/O Disques

Gauthier Catteau

Docker

Évolution des serveurs Comparatif des solutions Présentation de Docker Fonctionnement basique de Docker Et ensuite Conclusion

Docker c’est quoi ? Origine de Docker Sur quoi fonctionne Docker LinuX Conteneurs (LXC) Control Groups et Namespaces Installation : Ubuntu Linux 12.04.3

Installation : Ubuntu Linux 12.04.3 64bits et suivantes

AUFS support Le kernel 3.8 et suivants intègrent le support LXC et AUFS/Btrfs nécessairent pour Docker.

Ajout du dépôt Docker

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 36

A1D7869245C8950F966E92D8576A8BA88D21E9

sudo sh -c "echo ’deb http://get.docker.io/ubuntu docker main’ > /etc/apt/

sources.list.d/docker.list"

Installation

sudo apt-get update sudo apt-get install lxc-docker

Gauthier Catteau

Docker

Évolution des serveurs Comparatif des solutions Présentation de Docker Fonctionnement basique de Docker Et ensuite Conclusion

Commande de base Mode détaché Conteneurs vs Images Dockerfile Annuaire de conteneurs sur index.docker.io

Lignes directrices

1 Évolution des serveurs

2 Comparatif des solutions

3 Présentation de Docker

4 Fonctionnement basique de Docker

Commande de base Mode détaché Conteneurs vs Images Dockerfile Annuaire de conteneurs sur index.docker.io

5 Et ensuite

Gauthier Catteau

Docker

Évolution des serveurs Comparatif des solutions Présentation de Docker Fonctionnement basique de Docker Et ensuite Conclusion

Commande de base Mode détaché Conteneurs vs Images Dockerfile Annuaire de conteneurs sur index.docker.io

Le classique Hello World !

Téléchargement d’une image de base (ubuntu, centos, busybox ...)

$> docker pull ubuntu

Lister les images du système

images

$> docker REPOSITORY ubuntu ubuntu ubuntu ubuntu ubuntu busybox

TAG 12.04 l a t e s t p r e c i s e 12.10 q u a n t a l l a t e s t

Afficher "Hello World"

IMAGE ID 8dbd9e392a96 8dbd9e392a96 8dbd9e392a96 b750fe79269d b750fe79269d e9aa60c60128

CREATED 9 months ago 9 months ago 9 months ago 9 months ago 9 months ago 10 months ago

VIRTUAL SIZE 128 MB 128 MB 128 MB 175.3 MB 175.3 MB 4.964 MB

$> docker run ubuntu:12.04 echo "hello world"

Gauthier Catteau

Docker

Évolution des serveurs Comparatif des solutions Présentation de Docker Fonctionnement basique de Docker Et ensuite Conclusion

Commande de base Mode détaché Conteneurs vs Images Dockerfile Annuaire de conteneurs sur index.docker.io

Mode détaché

Lancer Docker en utilisant le flag -d

$> docker run -d ubuntu sh -c "while true; do echo hello world; sleep1; done"

Récuperer l’id du conteneur

$> docker ps CONTAINER ID 9d55d7d2c88d

IMAGE ubuntu : 1 2 . 0 4

COMMAND sh −c w h i l e t r u e ; do

CREATED 16 seconds ago

STATUS Up 15 seconds

Attacher la console au conteneur

$> docker attach <conteneur_id>

Stop/Start/Restart le conteneur

$> docker stop <conteneur_id>

Gauthier Catteau

Docker

Évolution des serveurs Comparatif des solutions Présentation de Docker Fonctionnement basique de Docker Et ensuite Conclusion

Commande de base Mode détaché Conteneurs vs Images Dockerfile Annuaire de conteneurs sur index.docker.io

Différences entre Conteneurs et Images

Supprimer un fichier d’une image

Publicité

$> docker run -d busybox rm /etc/passwd

Le fichier est-il toujours là ?

$> docker run busybox cat /etc/passwd root:x:0:0:root:/root:/bin/zsh daemon:x:1:1:daemon:/usr/sbin:/bin/sh

Valider la nouvelle image

$> docker ps −n=2 IMAGE CONTAINER ID busybox : l a t e s t 754b8e58437f 6c49f8cce911 busybox : l a t e s t $> docker commit 6c49f8cce911 g a u t h i e r / broken−busybox

COMMAND c a t rm / e t c / passwd

/ e t c / passwd

CREATED 16 seconds ago About a minute ago

STATUS E x i t 0 E x i t 0

Le fichier est supprimé dans notre nouvelle image !

$> docker run gauthier/brocken-busybox cat /etc/passwd cat: can’t open ’/etc/passwd’: No such file or directory

Gauthier Catteau

Docker

Évolution des serveurs Comparatif des solutions Présentation de Docker Fonctionnement basique de Docker Et ensuite Conclusion

Commande de base Mode détaché Conteneurs vs Images Dockerfile Annuaire de conteneurs sur index.docker.io

Automatiser la création avec les Dockerfile

Docker permet d’automatiser la création d’images qui pourront être ensuite lancées de multiples fois.

ubuntu:12.04

Création d’une image à partir de l’image ubuntu du dépôt Docker. # Lancement de la création avec la commande : # docker build -t repo/image-name chemin/du/DockerfileDir FROM MAINTAINER Monsieur Linux ENV RUN ADD EXPOSE CMD

DEBIAN_FRONTEND noninteractive apt-get update ; apt-get -y install nginx my-vhost /etc/nginx/site-enable/ 80

/etc/init.d/nginx start

À chaque instruction Docker commit les changements dans une nouvelle image. Si une image existe avec le même parent et la même commande, Docker utilisera l’image en cache au lieu d’exécuter de nouveau l’instruction.

Gauthier Catteau

Docker

Évolution des serveurs Comparatif des solutions Présentation de Docker Fonctionnement basique de Docker Et ensuite Conclusion

Commande de base Mode détaché Conteneurs vs Images Dockerfile Annuaire de conteneurs sur index.docker.io

Annuaire de conteneurs sur index.docker.io

Téléchargement d’une image sur l’index public

$> docker search apache $> docker pull creack/apache2

Lancement du conteneur et vérification des ports

$> docker run -d creack/apache2 $> docker ps

Mappage des ports du conteneur sur l’hôte

$> docker run -d -p 8888:80 -p 4444:443 creack/apache2 $> docker ps

Gauthier Catteau

Docker

Évolution des serveurs Comparatif des solutions Présentation de Docker Fonctionnement basique de Docker Et ensuite Conclusion

Passage à la vitesse supérieure

Lignes directrices

1 Évolution des serveurs

2 Comparatif des solutions

3 Présentation de Docker

4 Fonctionnement basique de Docker

5 Et ensuite

Passage à la vitesse supérieure

Gauthier Catteau

Docker

Évolution des serveurs Comparatif des solutions Présentation de Docker Fonctionnement basique de Docker Et ensuite Conclusion

Passage à la vitesse supérieure

Passage à la vitesse supérieure

Il existe de nombreuses solutions cloud basées sur Docker.

Flynn (Solution PaaS libre)

Deis (chef, Docker, nginx)

CoreOS (Mini OS avec Docker + etcd)

Openstack Docker (La solution Cloud OpenSource)

Redhat Openshift (La solution Cloud de Redhat)

Gauthier Catteau

Docker

Évolution des serveurs Comparatif des solutions Présentation de Docker Fonctionnement basique de Docker Et ensuite Conclusion

Avantages pour les développeurs :

Un environnement propre, sûr et portable.

Pas de soucis de dépendances manquantes.

Exécution de chaque application dans son propre conteneur isolé, ce qui permet une exécution avec différentes versions de bibliothèques.

Automatisation des tests, de l’intégration et du packaging.

Réduction/suppression des problèmes de compatibilité sur des systèmes différents.

Avantages pour les AdminSys :

Cycle de vie des applications plus efficace, cohérente et reproductible.

Augmentation de la qualité du code produit par les développeurs.

Suppression des incohérences entre les environnements de développement, de test et de production.

Meilleure séparation des tâches.

Amélioration considérable de la vitesse et de la fiabilité de déploiement.

Gauthier Catteau

Docker

Évolution des serveurs Comparatif des solutions Présentation de Docker Fonctionnement basique de Docker Et ensuite Conclusion

Avantages pour les développeurs :

Un environnement propre, sûr et portable.

Pas de soucis de dépendances manquantes.

Exécution de chaque application dans son propre conteneur isolé, ce qui permet une exécution avec différentes versions de bibliothèques.

Automatisation des tests, de l’intégration et du packaging.

Réduction/suppression des problèmes de compatibilité sur des systèmes différents.

Avantages pour les AdminSys :

Cycle de vie des applications plus efficace, cohérente et reproductible.

Augmentation de la qualité du code produit par les développeurs.

Suppression des incohérences entre les environnements de développement, de test et de production.

Meilleure séparation des tâches.

Amélioration considérable de la vitesse et de la fiabilité de déploiement.

Gauthier Catteau

Docker

Évolution des serveurs Comparatif des solutions Présentation de Docker Fonctionnement basique de Docker Et ensuite Conclusion

Questions ?

Des questions ?

Gauthier Catteau

Docker