Docker pour les nuls – la révolution du conteneur

docker_container_engine_logoDans le monde de l’informatique, la virtualisation est devenue un standard au niveau professionnel, mais aussi au niveau des services pour les particuliers… Vous ne vous en rendez pas compte, mais tous les services web que vous utilisez que ce soit pour vos emails (gmail, outlook, yahoo,…), les gestionnaires de stockage (dropbox, google drive,…) et j’en passe, sont des systèmes qui reposent sur des architectures virtualisées. Aujourd’hui, une nouvelle révolution est en marche… Docker. Docker est concept voulant aller plus loin que la virtualisation et nous allons vous expliquer ici même pourquoi.

La virtualisation, qu’est ce que c’est ?

Le principe de la virtualisation est simple. Au lieu d’avoir un serveur avec un système d’exploitation faisant tourner une ou plusieurs applications, on va mutualiser un ou plusieurs serveurs qui vont nous permettre de bénéficier d’un plus gros potentiel en termes de ressources techniques (plus de puissance processeur, plus de mémoire vive, plus d’espace disque…) et ainsi de créer des « serveurs virtuels » que nous appellerons machines virtuelles ou VM pouvant avoir chacune leur propre système d’exploitation et leurs propres applications.

Quel intérêt allez-vous me dire? Pourquoi ne pas garder chaque serveur physique avec son système d’exploitation et son ou ses applications ? 069e140d24f5e02819ab8f77a2d55514.media

Et bien en fait les intérêts sont très nombreux :

  • Utiliser les ressources adéquates au regard de l’application (on peut donner la puissance et la mémoire nécessaire et pas plus pour chaque VM),
  • Les machines virtuelles sont simples à manipuler ; on peut très bien basculer cette machine d’une plateforme à une autre dans un autre lieu sans aucun impact visible pour les utilisateurs,
  • L’installation est plus simple, car une fois une machine virtuelle créée avec son système d’exploitation et paramétrée, on peut la sauvegarder, la dupliquer, et cela à volonté,
  • Les solutions dites de reprise et de continuité (BCP/DRP) sont plus faciles à mettre en place,
  • On fait des économies d’échelles sur le matériel, l’électricité et l’espace étant donné qu’un serveur très puissant coûte plus cher bien entendu, mais peut héberger plusieurs serveurs virtuels qui, individuellement auraient coûté plus chers en électricité et en espace occupés,
  • etc.

Malheureusement, elle a aussi quelques inconvénients:

  • Le fait d’accéder aux ressources de façon virtuelle nuit aux performances ; on est obligé de passer par une couche d’abstraction matérielle qui malheureusement doit faire des interprétations entre le matériel en place et celui simulé dans la machine virtuelle.
  • Chaque machine virtuelle embarque un système d’exploitation qui consomme à lui tout seul énormément de ressources alors qu’au final, ce qui nous intéresse c’est la ou les applications qui vont tourner dessus,
  • Les librairies utilisées par des applications sur plusieurs VMs ne peuvent être mutualisées.

Je ne rentrerai pas plus dans des explications sur la virtualisation, Wikipedia dispose d’une très bonne page bien documentée là-dessus. On a donc ici un système très utile, malléable et économique pour les professionnels, mais on peut aller encore plus loin, être encore plus efficace, et pour cela : il y a Docker.

Et arriva Docker…

Docker est à l’origine un projet du fameux Solomon Hykes et de sa société DotCloud, un système de PaaS (Platform As A Service). Suite à leur succès et au besoin de flexibilité de l’industrie, ils décidèrent de rendre la plateforme open source et créèrent ainsi Docker inc. Pour la petite anecdote, Docker aurait dû être une plateforme française

Docker est le projet d’une plateforme servant à l’automatisation du déploiement d’application sous forme de conteneurs. Ça ne vous parle pas ? On va rendre les choses plus claires…

conteneur_2

On vient de parler de virtualisation et on comprend maintenant plus ou moins le principe. Ici, la philosophie est un peu différente, mais cumulable ! J’entends par là que l’on peut très bien virtualiser la plateforme Docker autant qu’on peut l’utiliser sur un serveur dédié.

Avant, nous avions notre ou nos serveurs hébergeant des machines virtuelles avec différents systèmes d’exploitations et différentes applications. Ici on a une machine (qui peut donc être virtuelle) hébergeant la plateforme docker et qui va nous permettre de gérer des conteneurs applicatifs. Au lieu d’avoir une machine virtuelle standard que l’on va par exemple dupliquer pour héberger une autre application, on va avoir des conteneurs applicatifs standards que l’on va pouvoir dupliquer, déplacer, sauvegarder pour les utiliser par exemple sur une autre plateforme Docker, sur un autre serveur, dans un autre lieu. Docker nous permet de faire abstraction de l’OS, du moment que les ressources adéquates sont en place.

Screenshot_from_docker.io_about

Mais alors, qu’est ce que Docker apporte de plus que la virtualisation traditionnelle ?

  • Le conteneur est fait sur mesure pour n’embarquer que les éléments vitaux des applications (l’application en elle-même et ses dépendances) et non pas toutes les librairies (ni l’OS dit invité) qu’elles n’utilisent pas et/ou qu’elles peuvent partager avec d’autres applications. On a ainsi une optimisation, un gain d’espace disque… En virtualisation « classique », vous devez monter un système d’exploitation de plusieurs Giga-octets pour seulement faire tourner une application de quelques Méga-octets.
  • Docker est beaucoup moins gourmand en ressources. En effet, le système d’exploitation est déjà une grosse partie de la consommation en ressources des machines virtuelles. Ici, on a un système d’exploitation hôte et non pas plusieurs ce qui va nous permettre de vraiment optimiser notre consommation et d’héberger ce qui après tout est essentiel, les applications.
  • Il va nous permettre de pouvoir faire tourner plusieurs instances de la même application, mais de différente version ! Idéal pour les développeurs qui veulent s’assurer que leurs changements sont bien pris en compte, que l’application est stable et fonctionnelle, tout en la comparant avec sa version précédente ou une autre version en test. Imaginez un jour pouvoir faire tourner 10 Exchange en parallèle sur la même machine avec des paramétrages différents.
  • Vous êtes administrateur ? Eh bien là aussi il y a un gain, car vous ne devrez pas gérer la sécurité et les configurations réseau de plusieurs serveurs, mais d’un seul.
  • Imaginez que vous souhaitiez travailler sur votre ordinateur portable sur une application… il ne vous restera plus qu’à déplacer le conteneur sur votre environnement au bureau pour pouvoir reprendre là ou vous en étiez. Docker fait abstraction des couches inférieures de la même manière qu’une VM, mais en incluant la couche OS. La portabilité est un des points clés de cette nouvelle voûte qu’est Docker. À la manière de la machine virtuelle que l’on peut déplacer de serveurs physiques en serveurs physiques, ici on est sur des conteneurs de tailles beaucoup plus réduites que vous pouvez manipuler à votre gré !
  • On terminera par un point très important, l’exécution. Attendu qu’il n’y a pas d’OS à relancer à chaque fois, l’exécution d’un conteneur ne prend pas plus de temps que l’exécution de l’application elle-même.

Il y a quand même encore quelques limitations, car Docker est un produit en pleine croissance… Ce dernier a été conçu nativement sur des infrastructures Linux et fonctionne grâce à la librairie libcontainer sur toutes les distributions. Depuis quelque temps maintenant, Docker est disponible via des machines virtuelles au déploiement automatisé pour OSX et Windows. Depuis novembre dernier, suite à leur partenariat avec Microsoft, Docker peut aussi être administré via un outil Microsoft baptisé Docker Command Line Interface et Microsoft est allé plus loin en décidant d’abandonner son propre système de conteneur pour intégrer la technologie directement dans Windows Server. L’interopérabilité n’est donc pas encore à 100%, mais les partenariats récents avec – entre autres –  Microsoft, Google, IBM ou encore Amazon vont dans ce sens.

Screen-Shot-2014-09-16-at-6.26.20-AM

Vous voulez aller plus loin ? Je vous invite à vous rendre sur le site officiel de la plateforme qui vous propose notamment de comprendre le fonctionnement par la pratique via un didacticiel très bien fait et ludique.

k9383Finalement, je ne pouvais parler de ce sujet sans aborder ce superbe livre que j’ai découvert via la revue de notre cher Bill Gates (qui entre parenthèses fait des revues excellentes de livres qui le sont tout autant et que je vous invite à découvrir via http://www.gatesnotes.com/Books/).

The BOX de Marc Levinson (à lire en anglais svp) reprend le concept du conteneur, cet objet si simple qui a complètement révolutionné les échanges internationaux. C’est l’audace de personnes entreprenantes et innovantes qui a poussé ce concept et changé le monde du transport pour entraîner la mondialisation…

Est-ce que l’audace de Docker va révolutionner l’informatique professionnelle actuelle ? On est en bonne voie…

fbbb494a7eef5f9278c6967b6072ca3e