Chapitre 1 • Les bases de docker
Cartouche
| Champ | Valeur |
|---|---|
| Auteur·e | Élise |
| Édition | 2025-02-08 |
| Taille des équipes | 1 personnes |
| Rendu | via git, et dépôt $YEAR_docker_c1, droits en lecture à delivery_collector |
Installation de Docker
Pour suivre ces chapitres, vous devez installer Docker si votre machine. En fonction de votre situation, les consignes d’installation sont différentes:
- sur Windows : installez Docker Desktop, en pré-requis vous aurez besoin de WSL2 ou de Hyper-V ;
- sur macOS vous aurez aussi besoin d’installer Docker Desktop ;
- sur Fedora, Ubuntu et Debian vous pouvez aussi installer Docker Desktop ou installer le Docker Engine en suivant une des procédures ici https://docs.docker.com/engine/install ;
- sur Arch Linux, installez les paquets
dockeretdocker-buildx, faitessystemctl enable dockerpuis redémarrez.
Note sur l’assistance par LLM
Bien que l’utilisation de ChatGPT, Claude ou d’autres LLMs ne soit pas interdite, il vous est conseillé de tenter les exercices par vous-même de sorte à bien comprendre le fonctionnement de Docker.
Mon conseil : si vous avez un problème utilisez un LLM avec un mode raisonnement et demandez lui de vous expliquer plutôt que de vous donner la solution complète.
Aujourd’hui les LLMs sont très forts à Docker et dans un contexte réel vous vous en serviriez pour produire la plupart des commandes et fichiers nécessaires au déploiement d’un projet. Cependant, une bonne connaissance de Docker est nécessaire pour comprendre ce que vous faites quoi qu’il arrive.
Conflit avec le réseau de l’école
Si vous ne pouvez plus accéder aux vidéos de démonstrations après avoir démarré docker, il faut que vous appliquiez cette configuration dans paramètres, engine sur windows ou /etc/docker/daemon.json sur linux:
{
"default-address-pools": [
{ "base": "172.19.0.0/16", "size": 26 }
]
}
Vidéos de démonstration
Plusieurs vidéos de démonstration sont disponible sur le réseau de l’école :
A) run environnement de développement bun et httpie
Dossier de rendu : task_a
Dans un fichier on_host.sh écrivez la commande qui permet d’exécuter un conteneur en mode interactif.
Dans un fichier inside_container.sh Écrivez les commandes à faire dans le conteneur une fois démarré en mode interactif qui vous permettent d’y installer :
- https://bun.sh/
- https://httpie.io/cli
- git
- un éditeur de texte (nano, vim, neovim, ou ce que vous voulez)
Il doit être possible d’y faire :
> git clone https://git.ecole-89.com/eriizu/20260204_elysia_hello.git code
> cd code
> bun i
bun install v1.3.8 (b64edcb4)
Checked 20 installs across 21 packages (no changes) [2.00ms]
> bun run src/index.ts&
[1] 115005
🦊 Elysia is running at localhost:3000
> http :3000
HTTP/1.1 200 OK
Content-Length: 13
Date: Wed, 04 Feb 2026 15:40:34 GMT
content-type: text/plain;charset=utf-8
Hello Docker?
B) Dockerfile : environnement de développement bun et httpie
Dossier de rendu : task_b
Écrivez le Dockerfile pour l’étape précédente. Les commandes pour installer bun, httpie et git doivent faire partie de l’image.
C) Dockerfile : elysia hello
Dossier de rendu : N/A
Dépôt de rendu : $YEAR_elysia_hello.
Étape 1
Faites un fork du projet elysia hello (appelez le $YEAR_elysia_hello) et écrivez son Dockerfile . Il doit exposer le port sur lequel le serveur écouter. Lorsqu’on execute l’image, elle doit démarrer le serveur automatiquement sans qu’on lui demande (grâce à l’instruction CMD).
Écrivez dans le fichier README.md la commande qui permet de construire l’image avec le nom “elysia_hello” et la commande qui permet d’exécuter l’image en mode détaché, écoutant sur le port 6543 et dont le conteneur se supprime automatiquement lorsqu’il est arrêté.
Étape 2
Elysia Hello admet des arguments qui changent le message renvoyé lorsqu’une requête lui est faite.
L’exécuter avec bun run src/index.ts hello world this is me va lui faire répondre sur une requête GET / le texte hello world this is me.
Grâce à l’instruction ENTRYPOINT faites en sorte que l’on puisse passer les arguments pour le serveur lorsqu’on le docker run, directement à la suite du nom de l’image.
Écrivez la commande qui permet de run l’image en choisissant le texte que renvoie le serveur lorsqu’on lui fait une requête.
D) Dockerfile, network, run : httpie
Dossier de rendu : task_d
Écrivez un Dockerfile pour créer une image qui nous permet d’utiliser httpie en entrypoint.
Dans commands.sh Écrivez les commandes qui permettent de :
- construire votre image httpie que vous nommerez
my_httpie; - créer un réseau docker nommé hello ;
- démarrer
elysia_hellosur ce réseau ; - exécuter
my_httpiepour faire une requête sur leelysia_hellodémarré (si HTTPie vous dis “NOT_FOUND” essayez d’ajouter “GET” en premier argument).
E) Dockerfile : recode de flip flop
Dossier de rendu : N/A
Dépôt de rendu : $YEAR_docker_flip_flop
- faites un groupe de 4 à 5 personnes
- chaque personne dans le groupe choisi une toolchain et un langage différents parmi
- dotnet (c#),
- pip ou pypy (python),
- bun (ts),
- deno (ts),
- gem (ruby)
- zig
- go
- graddle ou maven (java ou kotlin)
- (ou proposez votre propre toolchain)
- reproduisez le comportement de flip flop
- écrivez le Dockerfile de votre flip_flop
- faites cloner votre dépôt à une autre personne du groupe qui doit pouvoir le faire build et run sans instructions
- la personne qui essaie votre travail doit être différente de celle dont vous essayez le travail