Docker, quel est donc ce mammifère?

Docker, quel est donc ce mammifère?

  • Post category:docker
  • Reading time:5 mins read

Avant de vous parler de Docker, je vais vous raconter l’histoire qu’un de mes étudiants a vécu.

Il était une fois un jeune étudiant en dev qui codait tranquillement sur son ordinateur. Il était pressé car comme tout étudiant qui se respecte il devait présenter son travail le lendemain matin. Après des heures de travail, l’application était là, et elle fonctionnait à merveille ! Le lendemain, notre codeur arriva tout fier pour sa présentation, avec son projet sur une clé USB.

Il le transfère sur l’ordinateur de la salle de présentation. Et là, c’est le drame, ça ne fonctionne pas !

Quel est le problème ?

L’application de notre jeune développeur ne fonctionne pas sur l’ordinateur de démonstration à cause d’un problème d’environnement. Entre deux systèmes, il peut y avoir des différences de version sur les dépendances ou encore des bibliothèques manquantes.

Ici, notre problème se limite à 2 systèmes, mais imaginez une équipe de 10 personnes avec des ordinateurs sous OS X, Linux ou même Windows, un serveur de test sous Ubuntu, et un serveur de production sous CentOS. S’assurer que leur application fonctionne bien sur tous ces environnements peut s’avérer être un vrai cauchemar !

Mais il existe des solutions et parmi l’une d’entre elles nous avons DOCKER !!!.

Docker, quel est ce mammifère ?

Docker est une plateforme qui va exécute votre code à l’intérieur d’un conteneur indépendamment de la machine sur laquelle vous êtes ! Un conteneur ressemble à une machine virtuelle sauf qu’il n’embarque pas tout un système d’exploitation avec lui ce qui lui donne des temps d’exécution de quelques secondes, et une taille de guêpe.

Docker peut donc résoudre notre problème d’environnement, car quelle que soit la machine que nous utiliserons, le code s’exécutera de la même manière.

La plateforme Docker est composée de deux éléments :

  • Le démon Docker qui s’exécute en arrière-plan et qui s’occupe de gérer vos conteneurs
  • Le client Docker qui vous permet d’interagir avec le démon par l’intermédiaire d’un outil en ligne de commande

Si vous voulez plus d’informations sur le fonctionnement interne de Docker, je vous redirige vers l’article du site officiel : Understanding Docker

Comment l'installer ?

Le client Docker fonctionne sur tous les systèmes d’exploitation. En revanche, le démon Docker utilise des fonctionnalités du noyau Linux afin de gérer les conteneurs. Il ne fonctionne donc que sur Linux et les dernières versions de Windows (perso, je ne partirais pas en production avec, mais après c’est vous qui voyez).

Pour vos ordinateurs sous MacOS, ou Windows old school, il existe une solution. Vous devrez lancer le démon dans une machine virtuelle. Rassurez-vous, c’est très simple, Docker fournit un outil Docker Desktop.

Pour le guide d’installation de Docker en fonction de votre système, je vous redirige de nouveau vers le site officiel: Guide d’installation

Comment ca marche, un premier exemple ?

Avant de commencer, je dois vous confesser quelque chose. J’aime Java, j’aime Linux et ma distribution préférée, c’est Ubuntu. Voilà je l’ai dit.

Bon reprenons, nous allons devoir télécharger l’image Docker qui servira de base à nos conteneurs. On va partir d’une image … Ubuntu

$ docker pull ubuntu:20.04
20.04: Pulling from library/ubuntu
3ff22d22a855: Pull complete
e7cb79d19722: Pull complete
323d0d660b6a: Pull complete
b7f616834fd0: Pull complete
Digest: sha256:5d1d5407f353843ecf8b16524bc5565aa332e9e6a1297c73a92d3e754b8a636d
Status: Downloaded newer image for ubuntu:20.04
docker.io/library/ubuntu:20.04

Cette commande va télécharger depuis le Docker Hub l’image de la version 20.04 d’Ubuntu. Il existe bien d’autres images que vous pourrez trouver sur le registry Docker.

Pour voir les images que vous avez téléchargées, utilisez cette commande :

$ docker images
REPOSITORY TAG   IMAGE        ID CREATED   SIZE
ubuntu     20.04 1e4467b07108 3  weeks ago 73.9MB

Léger, vous avez dit léger!! Sur ma machine, l’image fait à peine 73.9 Mo. Essayez de le faire avec une VM…

Maintenant, nous allons lancer un conteneur et rentrer à l’intérieur :

$ docker run -it ubuntu:20.04 bash
root@:/#

Cette commande crée et démarre un conteneur à partir de l’image ubuntu. Le moteur démarre ensuite votre shell en interactif grâce aux options -it

Vous pouvez quitter le conteneur en faisant un Ctrl-d

Maintenant que vous êtes retourné sur votre machine, vous pouvez afficher la liste des conteneurs lancés avec cette commande :

$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

Il n’y a rien? C’est normal! En quittant le shell, le conteneur s’est aussi arrêté. Il est néanmoins possible de voir les conteneurs arrêtés avec la commande docker ps -a

Laisser un commentaire

vingt + 2 =