3. Notions et définitions - Docker

Maintenant que nous savons sur quoi s'appuie Docker ainsi que son réel intérêt, concentrons-nous sur la technologie Docker.

Les conteneurs

La notion de conteneur est encore peut-être un peu abstraite pour vous, et ce le sera moins, ne vous inquiétez pas. Avant tout, il faut savoir que les conteneurs existent depuis très longtemps, je ne vais pas faire l'historique ici, mais la technologie la plus récente avant Docker s'appuyant sur la conteneurisation est LXC.

Installation

Afin de commencer à manipuler Docker, installez le Docker Engine en suivant la documentation officielle consultable ici : https://docs.docker.com/engine/install/

Docker est décomposé en plusieurs morceaux, l'Engine reste le moteur principal.

Afin d'utiliser les commande Docker il faut soit disposer d'un accès root ou bien être dans le groupe Unix nommé Docker. L'idéal est d'ajouter notre utilisateur à ce groupe en exécutant la commande suivante :

usermod -aG docker <USER>

Afin de tester si Docker est bien installé, vous pouvez lister les conteneurs Docker en cours d'exécution avec la commande :

docker ps

Docker mets également à disposition une image Hello-World permettant de tester sa bonne installation. Pour l'exécuter, voici la commande :

docker run hello-world
Retour de la commande :
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
2db29710123e: Pull complete 
Digest: sha256:6e8b6f026e0b9c419ea0fd02d3905dd0952ad1feea67543f525c73a0a790fefb
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

Analysons le retour de la commande exécutée précédemment :

La première ligne nous indique que l'image Docker hello-world:latest n'est pas présente en local. Que cela signifie ? Qu'est-ce qu'une image ? A quoi correspond :latest ?

Les images

Une image Docker est le contenu "packagé" qui sera exécuté dans un conteneur.
Par exemple dans l'exemple plus haut, l'image hello-world sert à afficher les informations qui se sont affichées dans notre terminal.

Une image est composée avec un nom et un tag. Son tag se rapporte à sa "version" et il existe dans la plupart du temps, un tag nommé latest qui correspond à la version la plus récente de l'image.

Les images Docker sont créées à partir d'un fichier appelé Dockerfile, qui définit les dépendances et les étapes (layers ou couches) nécessaires à la construction de l'image.

Les images Docker sont stockées dans une registry. Toujours dans notre exemple plus haut avec l'image hello-world, à la 6e ligne nous constatons :
Status: Downloaded newer image for hello-world:latest

Cela signifie que l'image hello-world n'est pas présente en local. Par défaut, Docker va essayer de télécharger l'image (effectuer un docker pull) dans la registry officielle de Docker : le Docker Hub.

Pour lister les images Docker présentes sur votre machine, vous pouvez lancer la commande suivante :

docker images
Vous devriez avoir un retour comme celui-ci :
REPOSITORY    TAG       IMAGE ID       CREATED         SIZE
hello-world   latest    feb5d9fea6a5   17 months ago   13.3kB

Conclusion

Nous venons d'effectuer 4 opérations très courantes dans l'utilisation et l'administration de Docker :

  • Lister les conteneurs avec la commande docker ps
  • Lancer un conteneur avec la commande docker run
  • Télécharger une image Docker avec la commande docker pull (commande exécutée automatiquement par Docker)
  • Lister les images Docker présentes sur notre machine avec la commande docker images

Comme vous pouvez le voir, les commandes Docker sont très simples à retenir et ont une syntaxe similaire aux commandes Linux de bases.

Nous manipulerons notre conteneur dans le cours suivant !