Aller au contenu principal

Docker

· 3 minutes de lecture
j0rdan-m

Ce post a pour but d'aborder très rapidement les principes de fonctionnement de Docker. Pour faciliter le démarrage, nous utilisons une VM initialisée sous vagrant, que vous pouvez vous procurer sur ce lien

Qu'est ce que Docker

Comme bien expliqué sur opensource.com, Docker est un outil conçu pour faciliter la création, le déploiement et l'exécution d'une application en utilisant des conteneurs.

Les conteneurs permettent à un développeur de packager son application avec toutes les dépendances nécessaires, qu'elles soient de nature logicielle (bibliothèques, framework) ou système (runtime, composant d'OS). Ainsi, grâce au conteneur, le développeur s'assure que l'application peut tourner comme sur son propre environnement, car le conteneur en contient tous les composants paramétrés à l'identique.

Dans un sens, Docker rappelle un peu les machines virtuelles. Mais contrairement à une VM qui répplique tous les composants et un système d'exploitation entier, Docker permet aux applicaitons de n'utiliser que les parties d'un noyau nécessaire à l'éxécution de l'applicatif que le conteneur est destiné à faire tourner sur la machine hôte. Cela permet d'accroitre significativement les performances, et de reduire drastiquement la taille de l'applicatif "virtualisé".

Comment en bénéficier

Pour pouvoir exécuter un conteneur, il faut d'abord l'avoir téléchargé.

Pour cela, nous devons simplement pull le conteneur préalablement choisi sur le DockerHub.

Pour l'exemple, nous allons démarrer deux conteneur : Nginx et Grafana

Pour cela, entrer dans votre vm et tapez les commandes suivantes :

docker pull nginx
docker pull grafana/grafana

Maintenant que les conteneurs sont "pulled", ils sont disponibles dans notre environnement et nous pouvons les monter, c'est à dire les utiliser.

Cependant, nous devons prendre en compte le fait que le conteneur partage le hardware avec l'OS hôte. Il faut donc réaliser, dans certains cas, un mapping avec les éléments hardware utilisés. Nous utiliserons donc la commande -p pour mapper un port réseau du host sur le port virtuel du conteneur.

Pour cela, nous allons démarrer docker en indiquant de mapper le port 3000 de la machine hôte sur le port 3000 du conteneur :

docker run -d --name=grafana -p 3000:3000 grafana/grafana

Le résultat de la commande précédente devrait vous permettre d'accéder à l'application grafana en vous connectant à l'URL suivante : 127.0.0.1:3000

Notez le "sens" de lecture de la commande -p : "-p container_port_number:host_port_mapped". Le premier "3000" de notre commande indique le port du conteneur et le second celui de votre machine hôte. Par exemple, la même commande avec le mapping -p 3000:6000 sollicitera le port 6000 de la machine hôte, et l'URL d'accès devient 127.0.0.1:6000.

NB: SI vous utilisez une machine virtuelle pour démarrer vos conteneur, comme préconisé dans l'article, pensez également à assurer le mapping des ports entre la VM docker et l'hôte de virtualbox. Dans VirtualBox, ouvrez le menu Configuration > Network > Advance > Port Redirection et assurez de récupérer le port que vous avez positionné en hôte dans la commande docker.