diff --git a/README.md b/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..a7057ca7e3c39318e8461241b7263e81cd6716fb
--- /dev/null
+++ b/README.md
@@ -0,0 +1,119 @@
+# Exercices
+
+## Utilisation d'un registre privé
+
+### Détail de la configuration appliquée
+
+Ci-dessous le détail de la stack `compose` mise en oeuvre : 
+
+```bash
+# docker-compose.yml
+services:
+    registry:
+        restart: always
+        image: registry:2
+        container_name: mon-registre
+        # On mappe le port 5000 exposé par défaut au port 5000 sur l'hôte Docker
+        ports:
+            - 5000:5000
+        environment:
+            # On déclare un fichier `htpasswd` qui contient des infos de connexion locales
+            REGISTRY_AUTH: htpasswd
+            REGISTRY_AUTH_HTPASSWD_PATH: /auth/htpasswd
+            REGISTRY_AUTH_HTPASSWD_REALM: Registre Formation Docker
+        volumes:
+            # On mappe des volumes locaux afin que les données soient persistantes
+            - ./data/:/var/lib/registry
+            - ./auth/:/auth
+[...]
+```
+
+Le registre privé est situé derrière un reverse-proxy HTTPS (Traefik) qui écoute sur les ports 80/tcp et 443/tcp. Son adresse URL est `https://hub.chez-wam.info`. L'identifiant à utiliser est `formation`. 
+
+> Le mot de passe vous sera fourni sur les slides.
+
+### Travail à faire
+
+Nous allons créer d'abord un fichier `Dockerfile` dont le contenu sera le suivant :
+
+```bash
+FROM alpine:latest
+RUN apk add --no-cache git
+```
+
+Une fois cette opération effectuée, construire une image nommée `alpine-git` et lui mettre un tag `v1.0.0`. En vue de le pousser dans notre registre privé, il faut au préalable créer un nouveau tag en respectant ce format : `<URL_REGISTRE>:<PORT_REGISTRE>/<NOM_STAGIAIRE>/<NOM_CT>`. 
+
+Exemple pour moi :
+
+```bash
+docker tag alpine-git:v1.0.0 hub.chez-wam.info:443/masqueli/alpine-git:v1.0.0
+```
+
+La commande `docker image list` vous retournera la liste des images par date de création (de la plus récente à la moins récente). Essayez de pousser votre image sur le registre. Exemple pour moi : 
+
+```bash
+docker push hub.chez-wam.info:443/masqueli/alpine-git:v1.0.0
+```
+
+Votre client Docker doit refuser l'envoi et vous retourner un message du type "*no basic auth credentials*". C'est "normal" ! Il faut être authentifié pour envoyer sur le registre. Cela se fait à l'aide de la commande `docker login <URL_REGISTRE>:<PORT_REGISTRE>`. Vous communiquerez à votre client Docker l'identifiant (`formation`) et le mot de passe du registre associé.
+
+```bash
+docker login hub.chez-wam.info:443
+```
+
+Si tout se passe bien, le message "*Login Succeeded*" devrait apparaître. Essayez à nouveau de poussez l'image à l'aide de la commande `docker push`.
+
+```bash
+docker push hub.chez-wam.info:443/masqueli/alpine-git:v1.0.0
+```
+
+Nous allons créer ensuite un second fichier `Dockerfile` dont le contenu sera le suivant :
+
+```bash
+FROM alpine:latest
+RUN apk add --no-cache mysql-client
+ENTRYPOINT ["mysql"]
+```
+
+Nous construirons cette image qui sera nommée `alpine-mysql` avec un tag de version `v1.0.0` et nous la pousserons dans le registre comme vu précédemment dans cet exercice.
+
+Vérifions maintenant le contenu du catalogue de notre registre. Nous pouvons utiliser la commande `curl` en CLI pour cela :
+
+```bash
+curl -u formation:<password> -X GET https://hub.chez-wam.info:443/v2/_catalog
+```
+
+Vous devriez obtenir la liste de vos images présentes dans le catalogue global (`<nom_stagiaire>/alpine-git` et `<nom_stagiaire>/alpine-mysql`). Nous allons ajouter le tag `latest` que nous avons oublié pour l'image `alpine-mysql` ... toujours en respectant le format décrit plus haut : `<URL_REGISTRE>:<PORT_REGISTRE>/<NOM_STAGIAIRE>/<NOM_CT>`. Une fois cette opération effectuée, envoyez l'image marquée `latest` dans le registre.
+
+Vérifions maintenant les tags pour votre image `alpine-mysql`, toujours à l'aide de `curl` en CLI. Exemple pour moi :
+
+```bash
+curl -u formation:<password> -X GET https://hub.chez-wam.info:443/v2/masqueli/alpine-mysql/tags/list
+```
+
+Vous devriez obtenir, pour l'image `<nom_stagiaire>/alpine-mysql` les tags `v1.0.0` et `latest` au prompt. Nous allons enfin voir comment récupérer une image depuis le registre. Supprimez d'abord les images `<nom_stagiaire>/alpine-git:*` créées localement à l'aide de la commande `docker rmi`. Exemple pour moi :
+
+```bash
+# pour les clients Linux ou macOS
+docker rmi $(docker images 'alpine-git' -a -q)
+# pour les clients Windows, avec PowerShell
+docker rmi $(docker images --format "{{.Repository}}:{{.Tag}}"|findstr "alpine-git")
+```
+
+Vérifiez à nouveau à l'aide de la commande `docker image list` que toutes les références et les images locales `alpine-git` ont bien été supprimées. Essayez maintenant de récupérer l'image depuis le registre. Exemple pour moi :
+
+```bash
+docker pull hub.chez-wam.info:443/masqueli/alpine-git:v1.0.0
+```
+
+Vérifiez à nouveau à l'aide de la commande `docker image list` qu'il existe bien une image correspondant au nom et au tag donné précédemment. Félicitations ! Vous connaissez désormais les opérateurs de base pour interagir avec un registre privé :)
+
+
+
+
+
+
+
+
+
+
diff --git a/registre-prive/docker-compose.yml b/registre-prive/docker-compose.yml
index c61e6b9b31020a4ffebc3af8d234a640ca44101c..9aa80b8488b2cb2a1d0b21f8f1b6980e5d3dd4eb 100644
--- a/registre-prive/docker-compose.yml
+++ b/registre-prive/docker-compose.yml
@@ -3,15 +3,19 @@ services:
         restart: always
         image: registry:2
         container_name: registre-prive
+        # On mappe le port 5000 exposé par défaut au port 5000 sur l'hôte Docker
         ports:
             - 5000:5000
         environment:
+            # On déclare les certificats serveurs à utiliser, connus des CA
             REGISTRY_HTTP_TLS_CERTIFICATE: /certs/moncertif.crt
             REGISTRY_HTTP_TLS_KEY: /certs/macledecertif.key
+            # On déclare un fichier `htpasswd` qui contient des infos de connexion locales
             REGISTRY_AUTH: htpasswd
             REGISTRY_AUTH_HTPASSWD_PATH: /auth/htpasswd
             REGISTRY_AUTH_HTPASSWD_REALM: Registry Realm
         volumes:
+            # On utilise des volumes locaux afin que les données soient persistantes
             - ./data/:/var/lib/registry
             - ./certs/:/certs
             - ./auth/:/auth
\ No newline at end of file