Qu’est ce que Docker et comment l’installer ?

Introduction

Docker est un projet Open-Source , distribué en tant que tel depuis mars 2013. A l’heure actuelle, Docker c’est plus de 13 500 forks et 1 700 contributeurs sur leur page Github. Autant dire qu’en quelques années, le projet a gagné en popularité jusqu’à même son intégration native sur certains systèmes, par exemple, les NAS de la marque Synology.

Maintenant que l’historique (plutot récent) est fait, nous allons pouvoir aborder la question de l’intérêt de Docker.

Les Conteneurs

Avant de parler de Docker, nous devons définir la notion de Conteneurs.

Un conteneur, en informatique, est un ensemble de processus qui sont isolés du reste du système hôte. Le conteneur s’exécute à partir d’une image contenant tous les fichiers nécessaires à son exécution (dépendances par exemple). Ainsi, de cette manière, le conteneur propose une solution portable permettant une exécution d’application fiable entre plusieurs machines. De cette manière, en transférant le code et son environnement, la situation du code se lançant à merveille sur notre ordinateur personnel, mais qui ne fonctionne plus sur l’ordinateur d’un autre individu n’a plus lieu d’être.

L’un des autres aspects intéressants des conteneurs est leur isolation. En effet, les conteneurs sont isolés via l’OS, ils partagent le même noyau, mais sont complètement indépendants les uns des autres. Via différents outils les conteneurs vont permettre leur isolation, allocation des ressources… :

Les Namespaces vont avoir pour but d’isoler les processus, pour que chaque conteneur n’ait accès qu’à leurs process. Cette isolation va concerner aussi le réseau, car le conteneur va posséder sa propre interface réseau, ainsi que les mounts (pour isoler chaque filesystem). Cette isolation via namespace concerne donc chaque ressource qui va être partagée entre le système hôte et le conteneur et permet son isolation. Les groupes de contrôles vont avoir pour but de gérer et contrôler les accès aux ressources, mais aussi de mesurer l’empreinte en consommation des conteneurs présents.

Comme vu juste au-dessus, les conteneurs n’embarquent pas d’OS à proprement parlé, ce qui fait qu’ils sont très légers, là ou une Machine virtuelle classique va virtualiser l’OS, ses pilotes, des phériphériques… et enfin l’application, le conteneur lui va se contenter du minimum pour fonctionner en se basant sur les ressources déjà existantes de l’OS hôte.

Ces Vm “light” ouvrent de nouvelles portes et donnent un nouveau regard sur la virtualisation en entreprise. Prenons par exemple le cas d’une entreprise développant des logiciels. Pour lancer une phase de test de son produit, elle doit mettre en place plusieurs environnements qui pourraient montrer des bugs inconnus. A ce moment-là que va-t-elle choisir ? Utiliser 10-100-1000 machines virtuelles ? Cela serait extrêment coûteux et très gourmand en ressources, c’est dans ce genre de situation que les conteneurs semblent en tout point disposés à réaliser ce genre de tests de manière bien plus optimale.

Docker dans tout ça ?

La philosophie de Docker est “Build, Ship, and Run Any App, Anywhere”, cette phrase résume à elle seule tout l’intérêt et le fonctionnement de Docker. Via cette technologie , vous allez pouvoir développer votre application dans un conteneur Docker en utilisant la distribution et les outils de votre choix. Par la suite, vous allez pouvoir envoyer votre conteneur où vous le souhaitez que ce soit une personne ou une entité physique ou bien un cloud. Par la suite, vous allez pouvoir lancer votre application avec une certaine liberté d’action (gestion jusqu’à 1000 noeuds, update rapide sans latence…).

Docker est donc ce que l’on va appeler un “Hyperviseur” de conteneurs, grâce à lui vous allez pouvoir gérer et déployer facilement vos conteneurs, mais il ne s’arrête pas là.

L’architecture de Docker est divisée en trois parties :

  • Docker_Client
  • Docker_Host
  • Registry

Le Docker_Host contient le Daemon (processus) de Docker. C’est via celui-ci que nous allons pouvoir instancier un conteneur à partir d’une image système (de type Ubuntu par exemple).

Docker_Client est une application en lignes de commande qui vont permettre une communication entre l’utilisateur et le daemon présent dans le Docker_Host.

Registry est un serveur permettant l’envoi, le stockage, et la récuperation de vos images Docker stockées dans un registre privé. Nous y trouvons aussi le Docker hub, qui met à disposition des images prêtes à l’emploi, qu’elles soient vierges ou pour une utilisation spécifique (une fresh install d’Ubuntu ou le même système avec un serveur Nginx préconfiguré) dans un registre public.

Installation de Docker

Vous êtes intéressé ? Pourquoi ne pas mettre en place votre propre environnement Docker pour vous faire une idée ? Ne vous inquiétez pas, son installation est aussi simple que son utilisation.

Nous allons voir plusieurs cas d’installation, libre à vous de faire votre choix en fonction de votre situation.

Système Linux (type Debian) :

Tout d’abord, il faut installer certains paquets de base nécessaires à l’ajout du dépôt Docker sur votre machine (notamment pour permettre la gestion : le dépôt HTTPS de Docker).

apt-get install apt-transport-https ca-certificates curl gnupg2 software-properties-common

Il va vous falloir ensuite importer la clé du dépôt :

curl -fsSL https://download.docker.com/linux/$(. /etc/os-release; echo "$ID")/gpg | apt-key add -

Une fois que cela est fait , nous pouvons enfin ajouter le dépôt Docker à notre sources.listes

add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/$(. /etc/os-release; echo "$ID") $(lsb_release -cs) stable"

L’installation peut enfin commencer par les commandes :

apt-get update

apt-get install docker-ce

Vous pouvez au choix activer le service docker au démarrage de votre machine, ce qui vous évitera de le faire manuellement à chaque fois.

systemctl enable docker

Voilà ! Vous avez maintenant tous les éléments nécessaires au bon fonctionnement de Docker sous Debian.

Vous pouvez tester votre configuration via la commande :

Docker run hello-world

Cette commande va télécharger, depuis le Docker Hub , et mettre en place l’image “Hello World” qui va afficher tout simplement un message si tout est opérationnel.

Système Windows :

Depuis le début de cet article, je parle en effet de ces technologies de conteneurisation en le faisant passer pour une exclusivité Linux. Mais depuis peu, un portage de Docker est disponible sous Windows, son fonctionnement reste le même sauf que les dépendances et le kernel de base sont liés au système Windows. Les conteneurs créés seront donc basés sur Windows / Windows Server.

Avant d’installer quoi que ce soit, il faut savoir que Docker Windows est basé sur la technologie de virtualisation de Microsoft Hyper-V. Il faudra donc que vous possédiez l’une de ces trois versions de Windows :

  • Entreprise
  • Professionnel
  • Education

Les commandes suivantes seront réalisées dans une fenêtre Powershell.

Dans un premier temps nous allons activer deux options , l’option Hyper-V et l’option conteneur.

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All

Enable-WindowsOptionalFeature -Online -FeatureName containers -All

Pour finaliser l’activation, nous devons redémarrer votre machine. Une fois que cela est fait, l’installation peut débuter.

Tout d’abord nous allons récupérer l’installateur de Docker via le lien ci-dessous :

https://docs.docker.com/docker-for-windows/install/#download-docker-for-windows

Il vous suffit ensuite de l’exécuter et de suivre les indications comme n’importe quelle installation de programme Windows.

Une fois l’installation terminée, je vous invite à tester votre installation via la commande :

Docker run hello-world

Utilisation de base de Docker

Si tout se passe bien, à ce stade vous devriez être en mesure de créer vos propres conteneurs sur votre machine.

Nous allons voir dans cette section une des nombreuses possibilités d’utilisation de Docker. Par exemple je souhaite avoir un environnement ubuntu vierge. Via la commande ci-dessous je vais tout simplement récupérer la dernière image d’un conteneur debian et lancer un conteneur local associé.

docker run ubuntu

Vous pouvez bien évidemment changer “ubuntu” par un autre système linux , ou par un conteneur plus précis ( comme une image debian avec nginx installé). Je vous invite à vous rendre sur le Hub Docker pour voir toutes les images disponibles.

https://hub.docker.com/explore

Vous pouvez également, simplement récupérer l’image via un :

docker pull ubuntu

Une fois que votre conteneur est créé et lancé, il vous faut accéder à celui-ci. Avec cette commande vous allez accéder au bash de votre conteneur et ainsi modifier ou ajouter des fonctionnalités manuellement.

docker run -it ubuntu bash

Voilà un rapide et simple exemple pour vous montrer le fonctionnement le plus basique de Docker. Bien évidemment cette solution va bien au-delà de ça. Vous pouvez aussi créer vos propres images personnalisées via des scripts pour des besoins précis.

Si vous voulez en savoir plus, rendez-vous sur le site de Docker.

[Source : Félix LABRUHE pour SupInfo.com]

Was this article helpful?

Articles en relations

Leave A Comment?

You must be logged in to post a comment.