Docker et la containerization : virtualisation pour un SI plus flexible

La containerization utilise, par exemple Docker pour virtualiser le déploiement des applications.

Il est donc important que l’architecte du SI la maîtrise. Cet article fait un point sur Docker et les containers.

 

la containerisation avec docker

 

La genèse de Docker

Docker a été lancé en 2013. En 2015 la spécification et le code du cœur runC ont été légués à l’Open Container Initiative.

On peut aussi évoquer Containerd. C’est le « core container runtime » du daemon Docker.

Docker est donc construit sur runC et containerd.

Docker est fait pour les développeurs. Les opérateurs et intégrateurs doivent plutôt se tourner vers containerd.

 

VM – JVM ou conteneur ?

Un conteneur partage le noyau du système. Ce qui n’est pas le cas d’un VM. Une VM contient une copie complète d’un système d’exploitation. D’où une perte de place. Et cela fait que les conteneurs sont plus légers et démarrent plus rapidement.

Docker peut configurer le déploiement d’une JVM avec les bonnes versions de jars ou wars, contrôler l’usage CPU ou RAM, etc.

Il présente donc un grand avantage sur les VM et JVM.

 

Architecture client-serveur

Docker présente une architecture client-serveur. Le client parle au daemon docker.

Les deux dialoguent via des sockets ou une API RESTful.

 

architecture docker

Source : refcard

 

Lexique de la containerization

Image : un modèle en lecture seule construit à partir de Dockerfiles.

Registry : c’est là où on stocke les images. Il peut être privé ou public comme https://hub.docker.com. On peut appliquer des tags pour gérer les versions.

Conteneur : environnement applicatif virtualisé exécuté en isolation sur une machine. Il est lancé à partir d’une image. Les logs sont capturés.

Dockerfile : script contenant des commandes pour les exécuter sur une image de base ; OS, composants applicatifs, volumes pour les données, ports et commande de lancement à utiliser pour un conteneur.

Host : machine réelle ou virtuelle exécutant un daemon Docker.

Client : programme pouvant communiquer avec le daemon via l’API docker.

 

Le cycle de vie des images dans Docker

Les images sont prises dans le registry et utilisées pour instancier des conteneurs.

 

docker cycle de vie

Source : refcard

 

Conteneur – Container – Containerization

Un conteneur est un paquetage standalone et léger contenant du logiciel. Et tout ce qu’il faut pour l’exécuter. Par exemple, le code, le runtime, les librairies et outils système, les paramétrages.

Différents systèmes d’exploitation

Les containers sont disponibles sur Linux et Windows. Le logiciel dans le conteneur a toujours le même environnement pour fonctionner.

Isolation

D’autre part, chaque conteneur isole le logiciel du même logiciel s’exécutant dans un autre conteneur.

Inutile alors de « dépenser » une machine entière. Plusieurs environnements peuvent partager la même machine sans risque.

Démarrage rapide

Un conteneur démarre rapidement et utilise moins de RAM.

Les images utilisent des couches du système d’exploitation et partages des ressources. Cela limite l’usage des disques.

Multi systèmes

Ils fonctionnent sur Linux ou Windows. Sur VMs, bare metals et en cloud.

 

Ressources sur la containerization

Vous pouvez consulter ce livre.

Voici quelques liens utiles :

  • https://docs.docker.com/engine/installation/linux/docker-ce/ubuntu/#set-up-the-repository
  • https://docs.docker.com/get-started/#conclusion
  • https://www.docker.com/what-docker
  • https://www.docker.com/what-container

 

 

Illustration : distel2610

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *