Le but de cet article est une introduction à Docker pour donner quelques idées et détails et comprendre cette technologie, si vous êtes un débutant, ou aligner vos connaissances pour savoir d'autres usages et des scénarios pour s'en servir si vous la connaissez déjà .
Qu'est ce que c'est que Docker et pourquoi c'est important?
Le but de Docker c'est de permettre de déployer tout, on peut déployer à un moment donné un serveur Linux, une base de données.. Toute choses qu'on pourrait déployer sous une machine virtuelle VM, un EC2, un Cluster ESX, XEN ou KVM, sur un machine local, etc. Tous cela on veut pouvoir le déployer dans des conteneurs (Container) Docker .
Donc ça peut être des Web Aps, Des backends APIs, des librairies dans n'importe quelle langage, des bases de données SQL, No SQL. Et on veut pouvoir deployer tous cela à peut pres n'importe ou et dans n'importe quelles machine, quelques soit la distribution ou le kernel.
Au début, Docker était dédié pour les machines Linux, mais récemment Microsoft a annoncé qu'il vont supporter Docker sur Windows.
Donc, en tant que développeur d'application, vous allez être capable de créer des environnements Linux sur Linux, et Windows sur Windows. L’intérêt c'est qu'on va pouvoir utiliser le même API coté Windows et Linux, les même CLI et outils d'orchestration et management pour déployer ces containers. Si vous etes un développeur nous vous suggérons d'essayer avec cette technologie.
Le but de DockerLe but d'utiliser Docker est aussi d'avoir un déploiement fiable et consistant, si le code marche pour les développeurs dans leurs environnements, il faut qu'il marche aussi dans la production sans de mauvaises surprises.
Les mauvaises surprises c'est quoi? C'est les responsables Opérations (Ops) qui installent l'application, et vont par la suite trouver des problèmes ou bugs. Parce qu’il y'a une autre version ou ce n'est pas la même distribution, le même compilateur, package, etc.. Il peut y avoir une infinité de raisons pourquoi ce fameux code qui marche dans l'environnements développement ne marche pas en production, et donc avec Docker on veut se débarrasser de ce problème.
On veut faire en sorte que si cela marche ici ça marchera ailleurs parce que Docker va faire l'abstraction de ces différences. De la même manière qu'on peut déplacer une VM à une autre machine et qu'il marche sans aucun problème. La différence avec les transferts des machines virtuelles c'est qu'on peut perdre la performance coté VM Desktop en utlisant Vmware par exemple, et on risque d'avoir une grande différence entre les performances natives et virtualisés.
La deuxième des choses c'est que cela va permettre de lancer des environnements denses qui consomment moins de mémoire.
Comment ça marche docker
La question à poser alors comment peut on avoir presque aucun Overhead même si on a un niveau d'isolation des conteneurs qui s'ajoute.
Pour simplifier! le fait de travailler avec docker c'est comme si on ouvre une session avec un utilisateur linux. Le code en plus sur lequel on passe et très infime.
Mais, peut on maintenant passer à l'utilisation de docker et oublier les machines virtuelles? Le seul cas ou on peut passer à l'utilisation de docker et se débarrasser des machines virtuelles est lorsqu'on démontre par des benchmarks et on trouve qu'il y a des pertes en utilisant les VMs.
Docker Plateforme = Docker hub + Docker engine
Doker hub: est le hub, une sorte de réseau qui va nous apporter plein de services et de containers autour. Le docker hub nous permet d'avoir des conteneurs qu'on peut télécharger en utilisant le CLI, on peut avoir Ubuntu avec tous les distributions et versions, Centos, Apache, toutes sorte de base de données, Mysql, mangodb, Redis, toutes sortes de petites applications, Wordpress pour les createurs de sites web, vos applications que vous pouvez packager et envoyer au docker hub etc
Docker engine: est le moteur qui va faire tourner les containers, il joue le même rôle qu'un hyperviseur de VMs comme Xen et KVM.
Un conteneur Docker: est une machine virtuelle extrêmement légère ou on peut faire un SSH, un accès root, installer des packages, des logiciels.. et par la suite faire tourner notre applications. Un container est un ensemble de process groupés. Si on se met dans la machine qui fait tourner Docker je vais pouvoir voir un ensemble de petits process.
La première fois ou on télécharge un conteneur cela va être un peu long, mais une fois on l'a en local ça va extrêmement vite.
Un Cas concrète de l'utilisation de docker c'est la création de plusieurs conteneur pour l’environnement Test, des base de données Test, pour faire tourner une dizaine de testes unitaires dans le cas ou on ne possède pas plusieurs VMs et serveurs.
متشوّقون للعمل معك، فريقنا المبدع في خدمتك لتطوير أعمالك.