diff --git a/tutorial/docker-basis/first.md b/tutorial/docker-basis/first.md
index 8b5a4d6..170e21c 100644
--- a/tutorial/docker-basis/first.md
+++ b/tutorial/docker-basis/first.md
@@ -62,6 +62,7 @@ principaux registres :
-
-
+- (GitHub Container Registry)
::::: {.warning}
@@ -155,7 +156,7 @@ registre tiers :
```bash
-docker container un registry.nemunai.ie/hello-world
+docker container run registry.nemunai.re/hello-world
```
@@ -164,9 +165,9 @@ nécessaire de récupérer l'image. Elle est ensuite exécutée. Vous devriez do
obtenir un résultat en deux parties, similaire à la sortie suivante :
-```bash
+```
Unable to find image 'registry.nemunai.re/hello-world:latest' locally
-latest: Pulling from library/hello-world
+latest: Pulling from hello-world
2db29710123e: Already exists
Digest: sha256:7d246653d0511db2a6b2e0436cfd0e52ac8c066000264b3ce63331ac66dca625
Status: Downloaded newer image for registry.nemunai.re/hello-world:latest
diff --git a/tutorial/docker-basis/installation.md b/tutorial/docker-basis/installation.md
index 96264d3..c3f2bea 100644
--- a/tutorial/docker-basis/installation.md
+++ b/tutorial/docker-basis/installation.md
@@ -80,6 +80,12 @@ car la licence est gratuite pour un usage éducatif ou personnel.
Notez que cela ne concerne pas le projet ou le binaire Docker : ceux-ci restent
libres. Seules les applications Docker Desktop sont concernées.
+Si vous souhaitez des alternatives libres, vous pouvez considérer :
+
+- **Rancher Desktop** :
+- **Podman Desktop** :
+- **Colima** (macOS uniquement) :
+
:::::
[^DockerSubscription]:
@@ -175,4 +181,12 @@ Cette action n'est pas anodine d'un point de vue de la sécurité :
+Les membres du groupe `docker` peuvent obtenir les privilèges root sur la
+machine. Pour un environnement plus sécurisé, considérez :
+
+- **Docker en mode rootless** : permet d'exécuter le daemon Docker sans
+ privilèges root
+- **Podman** : alternative à Docker fonctionnant sans daemon et sans privilèges
+ root par défaut
+
:::::
diff --git a/tutorial/docker-basis/linking.md b/tutorial/docker-basis/linking.md
index 6011c3d..99f06e8 100644
--- a/tutorial/docker-basis/linking.md
+++ b/tutorial/docker-basis/linking.md
@@ -88,3 +88,21 @@ docker network connect NETWORK CONTAINER
Lorsque plusieurs conteneurs ont rejoint un réseau utilisateur, ils peuvent
mutuellement se découvrir grâce à un système de résolution de nom basé sur leur
nom de conteneur.
+
+::::: {.question}
+
+#### Et l'option `--link` ? {-}
+
+Vous trouverez peut-être dans d'anciens tutoriels l'utilisation de l'option
+`--link` pour connecter des conteneurs. Cette option est **dépréciée** depuis
+Docker 1.13 et ne devrait plus être utilisée.
+
+Les réseaux utilisateurs (`user-defined bridge networks`) sont la méthode
+recommandée pour faire communiquer des conteneurs, car ils offrent :
+
+- Une meilleure isolation réseau
+- La découverte automatique des noms (DNS intégré)
+- La possibilité de connecter/déconnecter dynamiquement des conteneurs
+- Plus de flexibilité et de sécurité
+
+:::::
diff --git a/tutorial/docker-basis/secrets.md b/tutorial/docker-basis/secrets.md
index 46fcbe6..db6120c 100644
--- a/tutorial/docker-basis/secrets.md
+++ b/tutorial/docker-basis/secrets.md
@@ -3,4 +3,113 @@
Garder des secrets
==================
-TODO
+Lorsque nous déployons des applications conteneurisées, celles-ci ont souvent
+besoin d'informations sensibles : mots de passe de base de données, clefs API,
+certificats, tokens d'authentification, etc. La gestion de ces secrets est
+cruciale pour la sécurité de nos applications.
+
+
+## Ce qu'il ne faut pas faire
+
+Avant de voir les bonnes pratiques, commençons par les erreurs courantes à
+éviter absolument :
+
+::::: {.warning}
+
+**Ne jamais inclure de secrets dans une image Docker !**
+
+Lorsque vous construisez une image avec un `Dockerfile`, tout ce qui est copié
+dans l'image y reste, même si vous le supprimez dans une couche ultérieure. Les
+images peuvent être inspectées, et les secrets peuvent être extraits de
+l'historique des couches.
+
+:::::
+
+::::: {.warning}
+
+**Ne jamais passer de secrets via la ligne de commande !**
+
+Les arguments de la ligne de commande sont visibles via `ps`, `docker inspect`,
+et sont souvent enregistrés dans l'historique du shell.
+
+
+```bash
+# MAUVAIS EXEMPLE - À NE PAS FAIRE
+docker container run -e DB_PASSWORD=monmotdepasse myapp
+```
+
+
+:::::
+
+
+## Variables d'environnement avec fichiers
+
+Pour éviter que les secrets n'apparaissent dans l'historique de commandes ou
+dans les processus, Docker permet de charger les variables d'environnement
+depuis un fichier :
+
+
+```bash
+docker container run --env-file secrets.env myapp
+```
+
+
+Le fichier `secrets.env` contiendrait :
+
+
+```
+DB_PASSWORD=monmotdepasse
+API_KEY=ma_clef_secrete
+```
+
+
+::::: {.warning}
+
+Pensez à ajouter ce fichier dans votre `.gitignore` ou `.dockerignore` pour éviter qu'il se retrouve accidentellement dans la nature !
+
+:::::
+
+
+## Montage de fichiers secrets
+
+Une approche plus sécurisée consiste à monter les secrets comme fichiers en
+lecture seule dans le conteneur :
+
+
+```bash
+docker container run \
+ --mount type=bind,source=$HOME/.secrets/db_password,target=/run/secrets/db_password,readonly \
+ myapp
+```
+
+
+L'application peut ensuite lire le secret depuis `/run/secrets/db_password`.
+Cette approche présente plusieurs avantages :
+
+- Les secrets ne sont pas visibles via `docker inspect`
+- Les secrets peuvent avoir des permissions restrictives sur l'hôte
+- Les applications peuvent être conçues pour lire les secrets depuis des
+ fichiers, ce qui est compatible avec les systèmes d'orchestration
+
+
+## Docker Secrets (Docker Swarm)
+
+Docker propose un système de gestion de secrets natif, mais celui-ci n'est
+disponible qu'en mode Swarm.
+
+
+```bash
+# Création d'un secret (nécessite Swarm mode)
+echo "monmotdepasse" | docker secret create db_password -
+
+# Utilisation dans un service
+docker service create --secret db_password myapp
+```
+
+
+Dans ce mode, les secrets sont :
+
+- Chiffrés pendant le transit et au repos
+- Montés dans `/run/secrets/` sous forme de fichiers temporaires en RAM
+- Distribués uniquement aux conteneurs qui en ont besoin
+- Gérés de manière centralisée
diff --git a/tutorial/docker-basis/volumes.md b/tutorial/docker-basis/volumes.md
index bd7f7e2..882538a 100644
--- a/tutorial/docker-basis/volumes.md
+++ b/tutorial/docker-basis/volumes.md
@@ -41,6 +41,31 @@ exemple :
:::::
+::::: {.question}
+
+Pour activer le listing de répertoires avec nginx, il faudrait créer un fichier
+de configuration personnalisé avec la directive `autoindex on;` et le monter
+dans le conteneur via un volume supplémentaire.
+
+:::::
+
+::::: {.question}
+
+#### Syntaxes `-v` et `--mount` {-}
+
+Vous remarquerez dans cette partie l'utilisation de deux syntaxes différentes
+pour monter des volumes :
+
+- **`-v` ou `--volume`** : syntaxe courte et concise
+ (ex: `-v ~/Downloads:/usr/share/nginx/html:ro`)
+- **`--mount`** : syntaxe explicite avec des paires clé-valeur
+ (ex: `--mount type=bind,source=...,target=...,readonly`)
+
+La syntaxe `--mount` est recommandée pour sa clarté, mais `-v` reste très
+utilisée car plus courte. Les deux sont équivalentes en fonctionnalité.
+
+:::::
+
## Les volumes
Les volumes sont des espaces créés via Docker (il s'agit d'objets Docker). Ils
diff --git a/tutorial/docker-basis/what.md b/tutorial/docker-basis/what.md
index d020452..567b48b 100644
--- a/tutorial/docker-basis/what.md
+++ b/tutorial/docker-basis/what.md
@@ -67,13 +67,13 @@ défaut.
### Les plugins Docker
L'architecture de Docker est devenue très modulable. Le projet est parti dans
-de nombreuses directions, chacun voulant tirer la couverture vers soit, et
+de nombreuses directions, chacun voulant tirer la couverture vers soi, et
l'équipe maintenant le projet a parfois eu du mal à arbitrer les bonnes choses
à ajouter ou non au projet.
-Afin de palier aux besoins complémentaires, parfois accessoires, parfois
+Afin de pallier aux besoins complémentaires, parfois accessoires, parfois
salvateurs, un système de plugins a été intégré. Il permet d'appeler d'autres
-programmes comme s'il s'agissait de composant de Docker.
+programmes comme s'il s'agissait de composants de Docker.
Certains plugins ajoutent des options à la ligne de commande (`docker-compose`,
`docker-scan`, `docker-buildx` ...). D'autres ajoutent des typologies de