Avez-vous déjà entendu parler de virtualisation ? De machines virtuelles ou encore de technologies de conteneurs telles que Docker ?

Des outils différents qui ont révolutionné le paysage informatique, servant un but commun : rendre vos infrastructures les meilleures possibles en simplifiant la vie des équipes qui travaillent sur celles-ci.

Docker est une technologie qui a révolutionné le paysage informatique en améliorant la productivité des développeurs, mais que fait réellement cet outil ?

Qu’est ce que les machines virtuelles ?

Définition machines virtuelles

Pour comprendre ce que sont Docker et les conteneurs, il faut d’abord comprendre ce que sont la virtualisation et les machines virtuelles.

La virtualisation hardware consiste à faire fonctionner sur une même machine physique, plusieurs systèmes comme s’ils fonctionnaient sur des machines physiques distinctes.

Si on prend l’exemple d’un serveur, un serveur est composé de plusieurs “couches” :

  • Applications (Ce sont les apps tel que Spotify, gmail, word... qui vont “tourner” sur la machine.)
  • OS (Operating System ou système d’exploitation : c’est le premier programme à s'exécuter lors du démarrage de la machine et il assure le lien entre les ressources matériel (hardware) de la machine et les applications qui “tournent” dessus. Par exemple, on parle de MacOs,Windows, iOs...)
  • Hardware (machine physique peut être autant un téléphone portable, qu’un ordinateur...)

hardware

La virtualisation hardware va donc permettre d’utiliser les ressources de la machine, soit le hardware, pour faire “tourner” plusieurs systèmes comme si chaque système tournait sur une machine séparée avec ses propres ressources matérielles, donc plusieurs OS par hardware sur lesquels tournent plusieurs applications.

serveur avec virtualisation

Autrement dit, une machine virtuelle c’est donc un ordinateur créé à l’intérieur d’un ordinateur, soit un OS installé à l’intérieur d’un OS. Une machine virtuelle va donc exécuter son propre OS qui va pouvoir accéder aux ressources de la machine physique qui l’héberge (CPU, mémoire RAM, etc).

Par ailleurs, il est possible d’exécuter plusieurs machines virtuelles simultanément sur un même ordinateur physique.

Avantages des machines virtuelles

Les machines virtuelles vont présenter de nombreux avantages, parmi lesquels :

Test d’un autre OS

Plusieurs machines virtuelles avec des OS différents peuvent coexister sur le même serveur physique : Linux, MacOS, Windows…

Par exemple, si vous avez un MacOS sur votre serveur physique ; vous pouvez sur votre machine virtuelle installer un OS Windows et exécuter des applications conçues pour celui-ci ; ou encore vous pouvez exécuter d’autres applications Linux sur un serveur sous Windows.

Les machines virtuelles vont donc vous permettre de :

⇒ Exécuter des logiciels non compatibles avec l’OS de votre machine physique.

⇒ Modifier un OS “virtuel” sans risques pour l’ordinateur physique. (Lorsque vous utilisez un autre OS via votre machine virtuelle et que quelque chose tourne mal lors de votre test, vous pouvez à tout moment supprimer la machine virtuelle et cela n’impacte pas l’OS de votre machine physique.)

Economie de coût

Qui dit machine virtuelle dit moins de serveurs physiques, donc moins de ressources matérielles, et moins de coûts !

En installant plusieurs machines virtuelles sur une seule machine physique plutôt que de multiplier les machines physiques, vous utilisez moins de matériel, et cela diminue donc les coûts de maintenance, d’alimentation et de refroidissement associés.

Disponibilité

Il est possible de supprimer, déplacer ou copier des machines virtuelles d’un serveur physique à un autre, sans avoir besoin de les stopper (sans stopper non plus l’OS et les applications qui tournent dessus). Cela permet d’améliorer le taux de disponibilité des services/applications.

Si les machines virtuelles présentent de nombreux avantages, la dégradation du temps de démarrage, de l’installation, des performances, et de la maintenance des machines virtuelles a introduit la création d’une nouvelle technologie, les conteneurs.

Qu’est ce qu’un conteneur ?

Les machines virtuelles et les conteneurs sont proches, car ce sont toutes les deux des technologies de virtualisation.

La principale différence est que le conteneur fournit une virtualisation au niveau du système d'exploitation (virtualisation software) tandis que la machine virtuelle, quant à elle, fournit une virtualisation au niveau du matériel (virtualisation hardware).

Finalement, un conteneur c’est une machine virtuelle sans les couches basses de l’OS (les couches basses de l’OS c’est le Kernel linux, soit le noyau linux, maître d'orchestre qui va faire communiquer les différents composants (matériels et logiciels) de la machine physique).

L’avantage des conteneurs est qu'ils vont permettre une virtualisation plus légère et facile que les machines virtuelles. En effet, plutôt que de faire tourner une machine virtuelle entière, un conteneur va regrouper tout ce dont il a besoin pour faire “tourner” une ou des applications et n’a pas besoin d’un OS complet contrairement aux machines virtuelles.

Autrement dit, les machines virtuelles vont cloner un OS alors que les conteneurs peuvent partager un OS. Les conteneurs démarrent donc plus vite et prennent moins d’espace dans votre ordinateur.

machines virtuelles

Un conteneur, c’est finalement un système d’exploitation minimaliste et un package logiciel qui contient :

  • Les services (applications, BDD, serveur web)
  • Les dépendances de ces services (librairie, code source, fichiers de configuration - ensemble des ressources externes nécessaires à l'exécution du code.)

tout en les isolant les uns des autres sur un même serveur physique.

On nomme cet ensemble une image.

Qu’est ce que Docker ?

Docker est la société qui a justement lancé la technologie des conteneurs en 2013, et qui domine le marché aujourd’hui.

docker-logo-s

Docker, c’est donc à la fois le nom d’une technologie, les conteneurs, et celui d’une entreprise américaine créée par Solomon Hykes.

Pourquoi Docker ? car Solomon s’est inspiré des conteneurs aéroportuaires, qui pour pouvoir mieux transporter les marchandises, les ont isolé et regroupé dans des boîte/conteneurs de même taille et même forme. Ainsi, n’importe quel conteneurs peut être déplacé par les mêmes grues, navires, car ceux-ci n'interagissent qu’avec la boîte/le conteneur en lui-même, quel qu’en soit le contenu.

Ainsi, à l’image d’un conteneur dans le domaine du transport maritime qui isole les marchandises qu’il va transporter au sein de ses navires, un conteneur comme Docker va donc isoler les applications.

L’avantage d’isoler les applications est que les conteneurs Docker vont les rendre plus légers, portables, moins consommateurs de ressources et donc plus performants et faciles à maintenir !

Avantages de Docker

Légèreté :

Du fait que les conteneurs Docker n’ont pas besoin de cloner l’OS et qu’ils contiennent uniquement ce qui est nécessaire au bon fonctionnement d’une ou plusieurs applications, ils vont demander beaucoup moins de ressources que les machines virtuelles.

Portabilité et multi-cloud :

Il est possible de créer, déployer et démarrer des conteneurs sur n’importe quel ordinateur ou serveur distant.

En effet, contrairement aux machines virtuelles, les conteneurs Docker n’ont pas d’OS séparé, ils se reposent sur l’OS de la machine physique. Ainsi, un conteneur peut être porté sur un autre OS et peut démarrer immédiatement.

Par ailleurs, les conteneurs peuvent s'exécuter dans pratiquement n'importe quel environnement (cloud public, privé ou hybride, on premise (serveur local), sous Linux, Windows, Mac, machine virtuelles ou dédiés…), ce qui en facilite le développement et le déploiement.

Performance :

Docker permet une montée en charge facile des applications car il va pouvoir les multiplier sur tout un ensemble d’OS, et fournir de la haute disponibilité.

Les conteneurs permettent de faire beaucoup plus de travail avec moins de matériel informatique, et n’ont pas besoin de machine physique aussi performante que les machines virtuelles.

Vous l’avez maintenant compris, la virtualisation présente de nombreux avantages, que ce soit via la technologies des machines virtuelles ou l’utilisation des conteneurs Docker, la virtualisation vous permet de réaliser un gain de temps et d’argent dans la gestion et l'exécution de vos serveurs et de vos applications.

Si la technologie Docker présente de nombreux avantages, et a été une véritable révolution dans le milieu informatique, dès lors qu’un grand nombre de conteneurs tournent sur une même machine, il devient plus difficile d’en gérer le trafic, l’évolution…

C’est alors qu’entre en jeu les orchestrateurs de conteneurs, qui vont, eux, permettre de faciliter la gestion d’un parc de conteneurs en automatisant la communication entre ceux-ci et répartissant des charges sur les machines. On entend d’ailleurs beaucoup parler de Kubernetes qui, à l’instar de Docker, domine lui aussi son marché.

Chez Padok, nous accompagnons nos clients sur la conteneurisation de leurs applications, sur des migrations cloud ou encore Kubernetes grâce à nos équipes DevOps.

Si vous réfléchissez à une migration mais que vous n’avez pas les ressources ou l’expertise en interne, n’hésitez pas à nous contacter, nous serons ravis d’échanger avec vous ! 😉