docker-compose up -d

docker pull alpine
docker tag alpine localhost:5000/my-alpine

docker images

# Pushing une image
# Maintenant, nous pouvons pousser l'image en utilisant la commande push:

docker push localhost:5000/my-alpine

# Cela ne fonctionne que si vous hébergez votre registre sur votre ordinateur local. Si vous l'hébergez sur un serveur, vous aurez besoin d'une connexion SSL sécurisée


# Pulling une image
# Extraire une image du registre est également simple et peut être effectuée à l'aide d'une seule commande.

docker pull localhost:5000/my-alpine
# Vous devriez recevoir un message indiquant que l'image existe déjà. Vous pouvez supprimer l'image et la tirer à nouveau si vous voulez vous assurer qu'elle fonctionne correctement.

# Après cela, vous pouvez exécuter l'image comme suit.

docker run -it localhost:5000/my-alpine sh
# Remarque: la plupart des registres vous demanderont de vous connecter avant d'extraire et de pousser des images à des fins d'authentification.

# Configuration de l'authentification
# Tous les registres qui ne sont pas situés dans un réseau local sécurisé auquel seules les personnes autorisées peuvent accéder auront besoin d'une sorte d'authentification pour le protéger des abus.

# Le moyen le plus simple d'obtenir une sécurité de base du registre et une restriction d'accès consiste à utiliser une sorte d'outil d'authentification de base comme htpasswd, qui stocke un secret qui vous aide à vous authentifier.


# Création du fichier d'authentification:
# Tout d'abord, nous commençons par installer le package htpasswd en exécutant la commande suivante:

sudo apt install apache2-utils
# Ensuite, nous allons créer un dossier qui contiendra nos fichiers de mots de passe.

mkdir auth
# Après cela, nous continuerons en créant un utilisateur à l'aide de la commande suivante:

htpasswd -Bc registry.password testuser
# Le dernier paramètre est le nom de l'utilisateur dans ce cas testUser. Après avoir exécuté la commande, vous serez invité à entrer votre mot de passe.

# Mise à jour du fichier docker-compose:
# Maintenant que nous avons créé l'utilisateur à l'aide de htpasswd, il est temps de modifier notre fichier docker-compose.yaml.
# La nouvelle version se trouve dans le répertoire ./update-docker-compose

# Pour REGISTRY_AUTH, vous devez fournir le schéma d'authentification que vous utilisez. REGISTRY_AUTH_HTPASSWD_PATH est le chemin du fichier d'authentification que nous venons de créer ci-dessus.

# Vous pouvez maintenant redémarrer votre configuration Docker pour rendre les modifications accessibles.

docker-compose up --force-recreate
# en vous positionnant dans le nouveau répertoire. 

# Connectez-vous au registre:
# Maintenant que le registre fonctionne avec une authentification de base, vous pouvez le tester en vous connectant à l'aide de l'utilisateur que vous avez créé ci-dessus.

docker login localhost:5000
# Vous serez invité à entrer votre nom d'utilisateur et votre mot de passe. Après vous être connecté avec succès à votre registre, vous pouvez pousser et extraire des images de la même manière que nous l'avons fait ci-dessus.

# Pour une authentification avancée:
# Il existe également des moyens plus avancés de fournir une authentification pour votre registre. Le plus populaire est de créer un proxy et de le placer devant votre registre. Cette approche nécessite une configuration et une mise en place plus complexes, mais vous donne également plus de contrôle sur l'accès à votre registre.

# Voici un guide officiel de Docker sur la façon d'utiliser Nginx comme proxy d'authentification : https://docs.docker.com/registry/recipes/nginx/
