Docker (logiciel)

Un article de Wikipédia, l'encyclopédie libre.
Sauter à la navigation Sauter à la recherche
Page d'aide sur l'homonymie Pour les articles homonymes, voir Docker (homonymie).
Docker
Description de l'image Docker (container engine) logo.svg.

Informations
Développé par Docker, Inc. (en)Voir et modifier les données sur Wikidata
Première version Voir et modifier les données sur Wikidata
Dernière version 18.09.0 ()[1]Voir et modifier les données sur Wikidata
Version avancée 17.04.0 ()[2],[3],[4]Voir et modifier les données sur Wikidata
Dépôt github.com/docker/docker-ceVoir et modifier les données sur Wikidata
État du projet En développement actif
Écrit en GoVoir et modifier les données sur Wikidata
Système d'exploitation Linux, Microsoft Windows et macOSVoir et modifier les données sur Wikidata
Environnement Multi-plateforme
Type Moteur de virtualisation (en)Voir et modifier les données sur Wikidata
Politique de distribution Gratuit
Licence Apache-2.0 et licence propriétaireVoir et modifier les données sur Wikidata
Site web www.docker.comVoir et modifier les données sur Wikidata

Docker est un logiciel libre permettant facilement de lancer des applications dans des conteneurs logiciels[5]. Selon la firme de recherche sur l'industrie 451 Research, « Docker est un outil qui peut empaqueter une application et ses dépendances dans un conteneur isolé, qui pourra être exécuté sur n'importe quel serveur ». Il ne s'agit pas de virtualisation, mais de conteneurisation, une forme plus légère qui s'appuie sur certaines parties de la machine hôte pour son fonctionnement. Cette approche permet d'accroître la flexibilité et la portabilité d’exécution d'une application, laquelle va pouvoir tourner de façon fiable et prédictible sur une grande variété de machines hôtes, que ce soit sur la machine locale, un cloud privé ou public, une machine nue, etc.[6].

Techniquement, Docker étend le format de conteneur Linux standard, LXC, avec une API de haut niveau fournissant une solution pratique de virtualisation qui exécute les processus de façon isolée[7]. Pour arriver à ses fins, Docker utilise entre autre LXC, cgroups et le noyau Linux lui-même[6]. Contrairement aux machines virtuelles traditionnelles, un conteneur Docker n'inclut pas de système d'exploitation, mais s'appuie au contraire sur les fonctionnalités du système d’exploitation fournies par la machine hôte[8].

La technologie de conteneur de Docker peut être utilisée pour étendre des systèmes distribués de façon qu'ils s'exécutent de manière autonome depuis une seule machine physique ou une seule instance par nœud. Cela permet aux nœuds d'être déployés au fur et à mesure que les ressources sont disponibles, offrant un déploiement transparent et similaire aux PaaS pour des systèmes comme Apache Cassandra, Riak ou d'autres systèmes distribués[9].

Vue d’ensemble[modifier | modifier le code]

Docker permet la mise en œuvre de conteneurs s'exécutant en isolation, via une API de haut-niveau. Construit sur des capacités du noyau Linux (surtout les cgroups et espaces de nommage), un conteneur Docker, à l'opposé de machines virtuelles traditionnelles, ne requiert aucun système d'exploitation séparé et n'en fournit aucun. Il s'appuie plutôt sur les fonctionnalités du noyau et utilise l'isolation de ressources (comme le processeur, la mémoire, les entrées et sorties et les connexions réseau) ainsi que des espaces de noms séparés pour isoler le système d'exploitation tel que vu par l'application. Docker accède aux capacités de virtualisation du noyau Linux, soit directement à travers la bibliothèque runc (disponible depuis Docker 0.9), soit indirectement via libcrt, LXC (Linux Containers) ou systemd-nspawn.

Utiliser Docker pour créer et gérer des conteneurs peut simplifier la mise en œuvre de systèmes distribués en permettant à de multiples applications, tâches de fond et autres processus de s'exécuter de façon autonome sur une seule machine physique ou à travers un éventail de machines isolées. Ceci permet de déployer des nœuds en tant que ressources sur besoin, fournissant ainsi une plateforme de déploiement de style PAAS et la scalabilité de systèmes tels Apache Cassandra, MongoDB ou Riak, ainsi que la simplification de la création et maintenance de queues de tâches ou autres systèmes distribués.

La notion de conteneur[modifier | modifier le code]

L'objectif d'un conteneur est le même que pour un serveur dédié virtuel : héberger des services sur un même serveur physique tout en les isolant les uns des autres. Un conteneur est cependant moins figé qu'une machine virtuelle en termes de taille de disque et de ressources allouées.

Un conteneur permet d'isoler chaque service : le serveur web, la base de données, une application peuvent être exécutés de façon indépendante dans leur conteneur dédié, contenant uniquement les dépendances nécessaires. Chaque conteneur est relié par des réseaux virtuels. Il est possible de monter des volumes de disque de la machine hôte dans un conteneur.

Histoire[modifier | modifier le code]

Docker a été développé par Solomon Hykes pour un projet interne de dotCloud, une société proposant une plate-forme en tant que service, avec les contributions d'Andrea Luzzardi et Francois-Xavier Bourlet, également employés de dotCloud, entreprise française. Docker est une évolution basée sur les technologies propriétaires de dotCloud, elles-mêmes construites sur des projets open source.

Docker a été distribué en tant que projet open source à partir de mars 2013[7].

Intégration avec d'autres systèmes[modifier | modifier le code]

L'intégration de Docker a été faite avec les outils de gestion d'infrastructures suivants :


Le 19 septembre 2013, Red Hat et Docker ont annoncé une collaboration concernant Fedora, Red Hat Enterprise Linux et Openshift[19]. En mai 2015, le constructeur de NAS Synology intègre Docker dans son logiciel interne DSM v5.2[20].

Références[modifier | modifier le code]

  1. « Release 18.09.0 » (consulté le 8 novembre 2018)
  2. « https://api.github.com/repos/docker/docker/releases » (consulté le 6 avril 2017)
  3. Michael Friis, « Docker Community Edition and Lifecycle Improvements » (consulté le 25 avril 2017)
  4. « https://github.com/docker/docker.github.io/blob/ef8696340757d5354950d6b6603d1bbfc522e01e/_includes/global-header.html » (consulté le 25 avril 2017)
  5. Maureen O'Gara, « Ben Golub, Who Sold Gluster to Red Hat, Now Running dotCloud », SYS-CON Media, (consulté le 9 août 2013)
  6. a et b Katherine Noyes, « Docker: A 'Shipping Container' for Linux Code », Linux, (consulté le 9 août 2013)
  7. a et b Abel Avram, « Docker: Automated and Consistent Software Deployments », InfoQ, (consulté le 9 août 2013)
  8. Alex Williams, « The Matrix Of Hell And Two Open-Source Projects For The Emerging Agnostic Cloud », TechCrunch, (consulté le 9 août 2013)
  9. Adron Hall, « OSCON : Conversations, Deployments, Architecture, Docker and the Future? », CloudAve, (consulté le 9 août 2013)
  10. Ansible, Inc., « Ansible and Docker », sur www.ansible.com (consulté le 22 février 2016)
  11. (en) « thoward/docker-cookbook », sur GitHub (consulté le 12 décembre 2015)
  12. (en) « garethr/docker · Puppet Forge », sur forge.puppetlabs.com (consulté le 12 décembre 2015)
  13. (en) « containers docker registry », sur www.inedo.com (consulté le 12 novembre 2017)
  14. (en) « Using SaltStack in production to manage Docker application containers », sur saltstack.com,
  15. https://github.com/philspitler/vagrant-docker
  16. (en) « georgebashi/jenkins-docker-plugin », sur GitHub (consulté le 12 décembre 2015)
  17. (en) « OpenStack Community Weekly Newsletter (May 31 – June 7) », sur www.openstack.org, (consulté le 12 décembre 2015)
  18. (en) « OpenSVC documentation — OpenSVC documentation », sur docs.opensvc.com (consulté le 12 décembre 2015)
  19. (en) Alex Williams, « DotCloud Pivots And Wins Big With Docker, The Cloud Service Now Part Of Red Hat OpenShift », (consulté le 12 décembre 2015)
  20. http://www.cachem.fr/synology-dsm-5-2-disponible-version-finale/ DSM v5.2

Annexes[modifier | modifier le code]

Articles connexes[modifier | modifier le code]

Liens externes[modifier | modifier le code]