1. Docker et la virtualisation : Docker est un logiciel open source (sous licen

1. Docker et la virtualisation : Docker est un logiciel open source (sous licence Apache 2.0) proposé par une société américaine, également appelée Docker, qui a été lancée par un Français : Solomon Hykes. En effet, Docker est un gestionnaire de conteneurs qui offre la possibilité de construire, délivrer et exécuter des applications distribuées. Il permet d’empaqueter une application et ses dépendances dans un conteneur virtuel, qui pourra être exécuté sur n’importe quelle machine (Linux ou Windows server). Contrairement aux machines virtuelles traditionnelles, un conteneur Docker n’inclut pas de système d’exploitation fourni par l’infrastructure sous- jacente. Il va simplement utiliser un noyau Linux. Cette technologie a pour but de faciliter les déploiements d'application, et la gestion du dimensionnement de l'infrastructure sous-jacente. La virtualisation par conteneur se base sur la virtualisation Linux LXC (LinuX Containers). Il s’agit d’une méthode de cloisonnement au niveau du système d’exploitation. Le principe est de faire tourner des environnements linux isolés les uns des autres dans des conteneurs partageant le même noyau ce que veut dire contrairement au MV traditionnelle, un conteneur n’inclut pas le SE puisqu’il s’appuie sur les fonctionnalités du SE de la machine hôte. Les conteneurs accèdent alors au SE hôte d’une manière totalement isolée les uns des autres. Le conteneur virtualise l’environnement d’exécution comme le processeur, la mémoire vive ou le système de fichier et ne virtualise donc pas la machine c’est pour cela qu’on parle de conteneur et non pas de MV. Le Docker Engine fait tourner les conteneurs et joue le rôle du contrôleur. De nombreux avantages de Docker sont à citer tels que la scalabilité, la portabilité, la performance et le déploiement facile. Les machines virtuelles et les conteneurs diffèrent de plusieurs façons. La principale différence est liée à l’architecture logicielle de ceux-ci. La machine virtuelle est composée d’un OS host (système d’exploitation hôte) sur lequel est exécuté un hyperviseur (comme Hyper-V sous Windows ou KVM sous Linux). L’hyperviseur va virtualiser le « Guest OS» (système d’exploitation invité) tout en virtualisant également la matériel et périphérique présent sur une station de travail classique comme par exemple la RAM, le CPU, etc. Par contre, le conteneur fonctionne toujours sur un OS host mais utilise le moteur Docker (Docker Engine) pour interagir et utiliser les fonctionnalités du noyau linux, les librairies et bibliothèque sont partager et donc utilisé par les différents containeurs hébergeant les applications. En résumé, les conteneurs sont donc plus polyvalents et performants que des VMs. Les conteneurs Docker peuvent démarrer en quelques secondes et s’arrêter aussi rapidement. 2. Les fondements du Docker : Docker s’est appuyé sur des fondements existants et rencontre un succès certain car il a rendu simple l’utilisation de ces technologies sous-jacentes. Namespaces : A la base de la technologie de conteneurs se trouve la notion de namespace. Ces «espaces de nommage » permettent de créer des ensembles de ressources gérées par Linux alors que, traditionnellement, elles étaient gérées en un seul bloc. Par exemple, les processus sont identifiés par un numéro, accessible dans une liste de tous les processus lancés par le système Linux. On parle d’identifiant de processus ou PID. Le principe du namespace est de réaliser des visualisations restreintes de ces ressources, selon une autre logique. En fait, lorsque l’utilisateur du système se place dans un namespace donné, ne voit par la commande ps que les processus associés à ce namespace. Il se retrouve isolé de tout le reste des processus gérés par le noyau Linux. Cgroups : Que l’application dans un namespace voie seulement les ressources de son namespace est une chose, mais il faut également garantir qu’elle ne peut as voir les ressources en dehors. C’est le rôle des control groups ou cgroups. Les Cgroups fonctionnent en étroite collaboration avec les namespaces, même s’il s’agit de deux fonctionnalités distinctes. Les cgroups permettent par exemple d’allouer uniquement 15% du CPU disponible à un processus, ou même à un ensemble de processus. LXC : Les deux technologies précédentes étant relativement complexes à manipuler par des lignes de commandes, LXC est né comme une première approche de simplification de leur utilisation. Le paradigme utilisé est celui des conteneurs, d’où le nom LXC (LinuX Containers). La notion de conteneur regroupe les allocations de ressources et l’isolation par namespaces/cgroups de façon à faciliter la mise en oeuvre d’ensembles de processus isolés les uns des autres. Libcontainer : A partir de la version 0.9, Docker a supprimé sa dépendance à LXC en la basant sur une interface plus contractuelle, définissant de manière standard les APIsi gérant l’accès aux ressources. L’API libcontainer permet d’utiliser les namespaces sans avoir à dépendre d’une implémentation particulière. Elle prépare Docker à une utilisation dans des OS autres que Linux. 3. Architecture du docker Docker utilise une architecture client-serveur. Le Docker client communique avec le Docker Daemon, qui fait la construction, l'exécution, et la distribution des Docker Container. Le Docker Client et le Docker Daemon peuvent fonctionner sur le même système. De même, on peut connecter un Docker Client à un Docker Daemon fonctionnant sur un hôte distant. Le ‘‘Docker Client’’ accepte les commandes et les options de configuration de l'utilisateur et communique avec le ‘‘Docker Daemon’’. Un client peut même communiquer avec plusieurs daemons indépendants. Le Docker Client et le Docker Daemon communiquent via les sockets ou par le biais d'une API. Les composantes principales d’un docker sont : Docker Images : Une image est le composant de base de Docker. C’est un instantané d’un système d’exploitation. Ces images sont disponibles sur un dépôt public, géré par Docker, appelé le registre. En termes simples, nous pouvons dire que les images de docker ne sont que des codes sources pour nos conteneurs. Par exemple, une image peut contenir un système d'exploitation Ubuntu avec le serveur web Apache et votre application web installée. Vous pouvez construire ou mettre à jour des images ou télécharger et utiliser des images créées par d'autres utilisateurs. Une image de docker est décrite dans le fichier texte appelé Dockerfile, qui a une syntaxe simple, bien définie. Docker containers : Un conteneur Docker est une instance exécutable d'une image Docker. Vous pouvez exécuter, lancer, arrêter, déplacer, modifier ou supprimer un conteneur en utilisant l'API Docker ou des commandes CLI. Chaque conteneur est une plate-forme d'application isolée et sûr, mais peut avoir accès aux ressources exécutées dans un hôte différent, ou d'un conteneur, ainsi que des entités de stockage persistantes ou des bases de données. Docker Registres : Un registre de docker est une bibliothèque d'images. Il peut être public ou privé, et peut être sur le même serveur que le Docker Daemon ou Docker Client, ou sur un serveur totalement distinct. Un registre est le composant responsable de la distribution d’un docker. 4. Commandes du docker ✓ CONTAINER ID : L’identificateur du conteneur ✓ IMAGE : L'image sur laquelle est basé le conteneur ✓ COMMAND : Dernière commande lancée lors de l'exécution de votre image ✓ CREATED : date de création de votre conteneur ✓ STATUS : statut de votre conteneur, voici une liste des différents états d'un conteneur : o created : conteneur créé mais non démarré (cet état est possible avec la commande docker create) o restarting : conteneur en cours de redémarrage o running : conteneur en cours d'exécution o paused : conteneur stoppé manuellement (cet état est possible avec la commande docker pause) o exited : conteneur qui a été exécuté puis terminé o dead : conteneur que le service docker n'a pas réussi à arrêter correctement (généralement en raison d'un périphérique occupé ou d'une ressource utilisée par le conteneur) ✓ PORTS: les ports utilisés par votre conteneur ✓ NAMES : nom de votre conteneur Pour rédiger un Dockerfile, il y a une syntaxe à respecter avec les instructions suivantes :  FROM permet de définir l’image source  LABEL permet d’ajouter des métadonnées à une image  RUN permet d’exécuter des commandes dans votre conteneur  ADD permet d’ajouter des fichiers dans votre conteneur  WORKDIR permet de définir votre répertoire de travail  EXPOSE permet de définir les ports d’écoute par défaut  VOLUME permet de définir les volumes utilisables  CMD permet de définir la commande par défaut lors de l’exécution de vos conteneurs Docker.  WORKDIR indique le répertoire de travail du conteneur  EXPOSE indique le port de communication dans notre cas le 80  STOPSIGNAL indique le signal système qui arrête le conteneur  CMD indique la commande à exécuter au démarrage du conteneur uploads/Industriel/ resume-docker-090949.pdf

  • 34
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager