Introduction

La para-virtualisation et la conteneurisation

Avant de présenter Docker, il est nécessaire de comprendre les concepts de para-virtualisation et de conteneurisation.

La para-virtualisation est une technique de virtualisation qui permet à une « machine virtuelle » d’utiliser un système sans à avoir virtualiser l’ensemble des composants de l’ordinateur (carte réseau, processeur, etc…), contrairement à la virtualisation classique qui va devoir émuler ces derniers. L’intérêt majeur est un gain important de performances, car la « machine virtuelle » utilise directement les ressources de la machine physique sans à avoir émuler un composant intermédiaire.

En informatique, on s’inspire du concept de conteneurisation issue du domaine de la logistique, c’est à dire pouvoir empaqueter un ensemble de ressources/produits (une application et l’ensemble de ses dépendances) afin de livrer le tout à une destination (un serveur informatique) sans à avoir à analyser le contenu.

L’image ci-dessous illustre ce propos.

Qu’est-ce que Docker?

Docker est un outil de conteneurisation qui s’appuie sur la para-virtualisation d’un système, afin de pouvoir livrer simplement l’ensemble d’une application et ses librairies sans à avoir adapter grandement le serveur qui va l’héberger. Dans les faits, il suffira d’installer le logiciel Docker sur le serveur pour que l’application puisse fonctionner, il faudra ensuite paramétrer cette dernière.

Dans Docker, une application est livrée dans un conteneur qui fournit l’ensemble des éléments nécessaires à son fonctionnement.

Les avantages de ces conteneurs sont donc énormes, on peut lister notamment les points suivants :

  • réduire les ressources nécessaires pour déployer et lancer des applications
  • réduire la complexité de déploiement et les échanges compliqués entre les développeurs (qui produisent les applications) et les sys-admins (qui gèrent l’infrastructure et fournissent le cadre pour faire fonctionner les applications)
  • donner la possibilité aux développeurs de pouvoir utiliser et configurer librement le système nécessaire qui servir de support à l’application
  • permettre aux conteneurs de partager facilement des ressources entre eux

Il est à noter également que Docker est cross-platform, il peut donc fonctionner sur Windows, Mac ou Linux.

Comment utiliser Docker?

Les étapes ci-dessous montrent comment réaliser un premier conteneur sous Linux.

Installation de Docker

Pour installer Docker sous Linux, nous allons partir d’une distribution ubuntu server LTS 18.04.

Une fois votre distribution fonctionnelle, voici les commandes à utiliser pour installer Docker :

# Tout d'abord une maj du système
sudo apt-get update && sudo apt-get upgrade -y
# Sous ubuntu 18.04, on peut utiliser Snap pour installer Docker au lieu du gestionnaire classique
sudo snap install docker
# Si vous souhaitez que votre utilisateur puisse lancer les commandes docker sans passer par sudo, lancez la commande suivante
sudo groupadd docker && sudo usermod -aG docker $USER
# Relancer la session pour que les modifications du groupe soit prise en compte
# ou simplement redémarrer la machine
# Lancer ensuite la commande suivante pour vérifier que Docker fonctionne correctement
docker run hello-world

Utilisation de Docker

Maintenant que nous avons un environnement de Docker fonctionnel, regardons ce que nous pouvons concrètement réaliser.

Télécharger et lancer des images

Les conteneurs de Docker sont construit en prenant comme base des images, pour le moment nous allons simplement télécharger des images depuis le dépôt officiel.

Vous pouvez vous rendre sur le site https://hub.docker.com/, vous y trouverez toutes les images disponibles, à noter qu’une image officielle créée et supportée par l’équipe de Docker porte la mention ‘official‘.

# Exemple 1 : Télécharger une image de Debian, par défaut on récupère la dernière version du dépôt
docker pull debian
# Exemple 2 : On souhaite une debian dans une version spécifique 'Jessie'
docker pull debian:jessie 
# Exemple 3 : On souhaite maintenant récupérer une fedora
docker pull fedora

Si vous souhaitez savoir quelles images sont disponibles sur votre serveur, vous pouvez lancer la commande suivante :

docker images

Voici le résultat de cette commande :

Pour lancer les images, il suffit d’essayer la commande docker run. Cette commande permet de lancer une opération sur un conteneur spécifique, une fois la commande réalisée le conteneur est ensuite supprimé.

Quelques exemples, avec les commandes suivantes:

# Lancer une commande pour vérifier la version de debian utiliser
docker run debian cat /etc/debian_version
docker run debian:jessie cat /etc/debian_version
# Vérifier la version de fedora utiliser
docker run fedora cat /etc/fedora-release
# Lancer un bash dans un conteneur Debian (latest) et se connecter sur ce conteneur
docker run -i -t debian /bin/bash
# Pour arrêter le conteneur, il suffit de lancer la commande exit
exit

Un cas  concret : Installer une application à l’aide de Docker

Nous allons maintenant rentrer dans le vif du sujet avec l’intérêt principal de Docker : le déploiement d’application. Pour rappel, notre serveur hôte Ubuntu possède uniquement Docker et donc aucune dépendance spécifique à des applications. Nous allons maintenant utiliser Docker pour installer une application : GLPI (une application de gestion de parc informatique développée en PHP).

Afin de trouver une image qui correspond à notre besoin, il suffit de se rendre sur https://hub.docker.com et de rechercher avec le tag ‘glpi ». Dans cet exemple, nous optons pour l’image https://hub.docker.com/r/driket54/glpi/, nous lançons ensuite la commande suivante issue de la documentation.

# Lancement d'un conteneur à partir de l'image driket54/glpi
docker run -it -d -p 80:80 driket54/glpi

Vous pouvez maintenant vous rendre sur l’adresse de votre serveur qui héberge Docker (http://votreserveur) et vous devriez avoir comme résultat la page suivante :

Et voilà! En une ligne de commande, vous avez une application fonctionnelle qui embarque toutes ses dépendances au sein de son conteneur. Si vous souhaitez allez plus loin avec cette image, il faudra préciser un serveur de base de données dans sa configuration.

Si vous souhaitez arrêter ce conteneur, il suffit de lancer la commande suivante :

# Stopper le conteneur
docker stop <nom_du_conteneur>
# supprimer le conteneur
docker rm <nom_du_conteneur>

Et enfin, pour connaitre la liste des conteneurs en cours d’exécution  sur votre système :

docker ps

Conclusion

A travers cette rapide introduction à Docker, nous avons pu constater les avantages qu’offre cette solution et on comprend pourquoi elle est de plus en plus utiliser par les communautés (développeurs et administrateurs). Il reste encore beaucoup de points à aborder sur Docker et cela fera l’objet de nouveaux articles!

 

 

Catégories : Informatique

0 commentaire

Laisser un commentaire

Avatar placeholder

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

I accept that my given data and my IP address is sent to a server in the USA only for the purpose of spam prevention through the Akismet program.More information on Akismet and GDPR.

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.