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 !