Decouverte
de Docker

Tutoriel pas a pas
Lancer son premier conteneur en moins de cinq minutes
🐳

Avant de commencer

Cette decouverte n'est pas un devoir. Elle ne sera pas notee. C'est un terrain de jeu pour se familiariser avec Docker en lancant de vrais conteneurs sur sa machine.

On va taper sept commandes au total. Chacune produit un effet visible. Si la premiere fonctionne, toutes fonctionneront.

Promesse A la fin de ce diaporama, on aura lance et arrete plusieurs conteneurs, vu une baleine parler, et fait tourner un serveur web sans rien installer.
Etape 1

Verifier que Docker est bien la

Avant tout, on s'assure que Docker repond. Cette commande affiche la version installee. Si elle ne fonctionne pas, Docker n'est pas demarre - aucune autre commande ne fonctionnera non plus.

A taper dans le terminal
$ docker --version
Ce qu'on devrait voir
Docker version 24.0.7, build afdd53b
Si erreur Demarrer le service avec sudo systemctl start docker sur Linux, ou ouvrir Docker Desktop sur Windows/Mac.
Etape 2

Le tout premier conteneur

La tradition veut qu'on lance hello-world en premier. C'est une image officielle minuscule qui n'existe que pour confirmer que tout fonctionne.

$ docker run hello-world
Ce qu'on devrait voir
Unable to find image 'hello-world:latest' locally latest: Pulling from library/hello-world Status: Downloaded newer image for hello-world:latest Hello from Docker! This message shows that your installation appears to be working correctly.
Ce qui s'est passe Docker a cherche l'image localement, ne l'a pas trouvee, l'a telechargee depuis Docker Hub, puis l'a lancee. La prochaine fois, plus de telechargement.
Etape 3

Faire parler une baleine

Pour le plaisir - une image qui dessine une baleine ASCII faisant passer un message. Aucun installateur a executer, juste une commande.

$ docker run docker/whalesay cowsay Bonjour la classe !
Ce qu'on devrait voir
_______________________ < Bonjour la classe ! > ----------------------- \ \ \ ## . ## ## ## == ## ## ## ## === /""""""""""""""""\___/ === ~~~ {~~ ~~~~ ~~~ ~~~~ ~~ ~ / ===- ~~~ \______ o __/ \ \ __/ \____\______/

Tout l'environnement necessaire a cowsay (Perl, polices, dictionnaires) est dans l'image. Rien n'a ete installe sur la machine hote.

Etape 4

Lancer un vrai serveur web

Maintenant le moment magique. Une seule commande pour faire tourner Nginx, le meme serveur web qui sert des millions de sites en production.

$ docker run -d -p 8080:80 --name mon-web nginx
-d
en arriere-plan (detached) - le terminal reste libre
-p 8080:80
publier le port 80 du conteneur sur le port 8080 de la machine
--name mon-web
donner un nom au conteneur pour s'y referer plus tard
nginx
nom de l'image officielle a lancer

Ouvrir un navigateur sur http://localhost:8080 - on voit la page d'accueil de Nginx. Le serveur tourne dans son conteneur, isole du systeme.

Etape 5

Voir ce qui tourne

Pour lister les conteneurs en execution sur la machine.

$ docker ps
Ce qu'on devrait voir
CONTAINER ID IMAGE COMMAND STATUS PORTS NAMES 9f3a8b1e2c4d nginx "/docker-entrypoint..." Up 2 minutes 0.0.0.0:8080->80/tcp mon-web

On y voit le conteneur Nginx demarre a l'etape precedente, son port publie, et son nom. Les conteneurs hello-world et whalesay n'apparaissent pas - ils ont termine leur travail et se sont arretes immediatement.

Astuce Ajouter -a pour voir aussi les conteneurs arretes : docker ps -a.
Etape 6

Entrer dans un conteneur Linux

On peut aussi lancer un conteneur en mode interactif pour explorer l'interieur. Ici une mini-Ubuntu vierge.

$ docker run -it ubuntu bash
-it
interactif (i) avec un terminal (t) - on tape, on voit la reponse
ubuntu
image officielle d'Ubuntu
bash
commande a executer dans le conteneur - ici un shell

Une fois dedans, on peut explorer : ls /, cat /etc/os-release, installer un paquet avec apt. Tout ce qu'on fait reste dans le conteneur. Pour sortir, taper exit.

A retenir En sortant, le conteneur s'arrete. Tout ce qu'on a installe ou modifie est perdu - sauf si on a construit une image (sujet du prochain diaporama).
Etape 7

Arreter et nettoyer

Le serveur Nginx tourne toujours en arriere-plan. Trois commandes pour faire le menage.

Arreter
$ docker stop mon-web
Supprimer le conteneur arrete
$ docker rm mon-web
Voir qu'il n'y a plus rien
$ docker ps

Les images telechargees restent sur la machine - on pourra les relancer instantanement plus tard. Pour les voir : docker images.

Ce qu'on sait deja faire

Verifier Docker docker --version
Lancer un conteneur docker run nom-image
Publier un port docker run -d -p 8080:80 nginx
Mode interactif docker run -it ubuntu bash
Lister docker ps (et docker ps -a)
Nettoyer docker stop / docker rm

Pour aller plus loin

Cette decouverte montre comment utiliser des images existantes. La suite logique, c'est apprendre a en fabriquer une.

Decouverte Dockerfile
Construire son propre conteneur avec un Dockerfile, en partant d'un hello world a deux lignes.
Introduction conceptuelle
Le diaporama d'introduction explique en profondeur les notions d'image, de couches et de registre.
Docker Hub
Aller voir hub.docker.com - explorer les images officielles, lire leurs descriptions, essayer celles qui interpellent.
Le devoir final
L'evaluation reprend ces commandes et y ajoute la fabrication d'images personnalisees - vous avez maintenant les bases.