« Docker est un logiciel libre destiné aux développeurs et administrateurs systèmes, dont l’objectif est de faciliter le développement, la diffusion et le déploiement d’applications web autonomes. Son principal intérêt est d’assembler les briques d’une application en conteneurs pouvant être partagés, sous forme d’images, au travers d’un registre (“docker registry”) et de les exécuter quels que soient la plateforme et l’environnement. Grâce à Docker, les applications deviennent portables et exécutables n’importe où : sur des ordinateurs portables Mac ou Windows, des machines virtuelles, de serveurs de production, etc. » (source https://www.disko.fr/reflexions/technique/introduction-docker/)
Docker a été initialement développé par Solomon Hykes pour un projet interne à la société de plateforme en tant que service (platform as a service - PaaS ) qu’il a créée en 2008, dotCloud. Docker a été distribué en tant que projet open source en 2013, projet qui a rapidement été très actif avec de nombreux contributeurs. Selon Wikipédia « En décembre 2017, le projet a été mis en favoris plus de 46 000 fois sur GitHub, avec plus de 13 500 forks et 1 700 contributeurs ». Vous trouverez un entretien très intéressant de Solomon Hykes qui parle de son produit ici.
PaaS est un des types de cloud computing où le fournisseur met à disposition des entreprises un environnement d'exécution rapidement disponible (infrastructure, serveurs, logiciels de base, etc) en leur laissant la maîtrise des applications qu'elles peuvent installer, configurer et utiliser elles-mêmes.
Le nom Docker recouvre le logiciel lui-même, la technologie et les outils qu’il embarque, le projet d'une communauté Open Source (communauté Open Source Docker), la nouvelle société créée par Solomon Hykes (Docker inc) en charge du développement qui s’appuie sur le travail de la communauté et le nom de la plateforme officielle en ligne.
Docker est une technologie de conteneurisation reposant sur le noyau Linux et ses fonctionnalités de virtualisation par conteneurs (LXC pour Linux Containers), notamment :
Docker utilise des fonctionnalités natives au noyau Linux, comme les cgroups ou les namespaces, mais offre les outils pour le faire de manière simplifiée pour permettre, entre autres :
Les conteneurs Docker sont construits à partir des images Docker. Une image Docker est un package léger, autonome et exécutable d'un logiciel qui inclut tout ce qui est nécessaire pour l'exécuter : code de l’application, environnement d’exécution (runtime), outils système et librairies, etc. Disponible pour les applications basées sur Linux et Windows, le logiciel conteneurisé fonctionnera toujours de la même manière, quel que soit l'environnement.
Ainsi, les conteneurs Dockers offrent une grande flexibilité qui permet de les créer, déployer, mettre à jour, copier et déplacer d'un environnement à un autre. De nombreuses images allant de la simple application comme Nextcloud à un système d’exploitation complet comme Debian sont disponibles sur :
Il est bien sûr possible de proposer des images, d’en modifier d’autres et de déposer la modification sur le dépôt officiel.
Pour terminer cette rapide présentation, il est utile de préciser que les conteneurs Docker sont actuellement pris en charge par les principaux acteurs du cloud. Ainsi, un conteneur Docker peut se déployer en de multiples instances sur toutes les principales distributions Linux, Microsoft Windows, et sur toutes les infrastructures, y compris les machines virtuelles, bare-metal mais aussi dans le cloud.
La virtualisation classique permet, via un hyperviseur, de simuler une ou plusieurs machines physiques, et de les exécuter sur le serveur hôte sous forme de machines virtuelles (VM). Ces VM intègrent elles-mêmes un système d’exploitation complet sur lequel les applications qu'elles contiennent sont exécutées. L’hyperviseur est donc responsable de tous les échanges de données. Exécuter plusieurs machines virtuelles sur un même serveur demande de grosses performances et un nombre suffisant de ressources pour assumer plusieurs machines virtuelles. Le démarrage d’une machine virtuelle peut être plus ou moins long en fonction aussi de la technique utilisée (virtualisation complète ou paravirtualisation).
Les conteneurs Docker s'exécutant sur une machine hôte partagent le noyau du système d'exploitation de cette machine et font directement appel à celui-ci pour exécuter leurs applications. Ils démarrent ainsi très rapidement et utilisent peu de ressources (processeur, mémoire vive, etc.). Du fait que les conteneurs n'embarquent pas de système d’exploitation et qu’ils peuvent partager des fichiers communs, ils sont très légers : cela réduit l'utilisation du disque, ils se migrent plus facilement d’une machine physique à une autre et les téléchargements d'images sont beaucoup plus rapides Par ailleurs, la technologie mise en œuvre isole les applications les unes des autres et de l'infrastructure sous-jacente.
Les conteneurs Docker souffrent tout de même de quelques limites :
Alors que Solomon Hykes, le CTO et fondateur de Docker, quitte l'entreprise, les résultats sont là et il ne se passe pas une semaine sans qu’une annonce autour de Docker ne soit faite.
Le CTO, pour Chief Technology Officer en anglais et directeur de la technologie en français est un salarié chargé de s'occuper de la direction des questions scientifiques et techniques au sein d'une organisation.
On peut lire ici (article de journal du net) « Docker Inc revendique une communauté massive d'utilisateurs, avec à la clé plus de 200 groupes actifs à travers le monde. Inaugurée en 2014, en parallèle de la sortie de Docker 1.0, la forge lancée par la société de San Francisco (le Docker Hub), et via laquelle les développeurs peuvent partager leurs containers, atteint à ce jour 3,5 millions d'applications containeurisées. Depuis son ouverture, la plateforme a enregistré pas moins de 37 milliards de téléchargements de containers (ou pull en langage technique). « L'augmentation du nombre de pull sur le Docker Hub est exponentielle. Il atteint désormais le chiffre pharaonique de 1 milliard toutes les deux semaines », confie Patrick Chanezon. ».
Cet article fait également état de 450 clients payants dont plusieurs dizaines sont français, parmi lesquels une majorité de groupes du CAC40.
Pourquoi tant d’engouement ? Quelles sont les utilisations possibles, efficaces et pertinentes de Docker ?