Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
informatique:docker:registrydocker [2023/11/24 08:11] benoit [Préparation des dossiers et fichiers requis] |
informatique:docker:registrydocker [2023/11/24 13:16] (Version actuelle) benoit [Se connecter et pousser une image sur la Registry] |
||
---|---|---|---|
Ligne 4: | Ligne 4: | ||
==== Prérequis ==== | ==== Prérequis ==== | ||
+ | |||
Installer Docker compose : | Installer Docker compose : | ||
- | apt install docker-compose | + | apt install apache2-utils |
==== Préparation des dossiers et fichiers requis ==== | ==== Préparation des dossiers et fichiers requis ==== | ||
Ligne 76: | Ligne 77: | ||
Pour retreindre l'accès à la registry, nous allons créer un compte utilisateur : | Pour retreindre l'accès à la registry, nous allons créer un compte utilisateur : | ||
cd /mnt/registry/auth/ | cd /mnt/registry/auth/ | ||
+ | htpasswd -Bc registry.passwd benoit | ||
- | ==== Création du fichier Docker compose ==== | + | ==== Préparation de lancement des conteneur pour la Registry ==== |
Créer un fichier Docker compose : | Créer un fichier Docker compose : | ||
Ligne 128: | Ligne 130: | ||
* **Registry -> image** : La registry sera un conteneur créé à partir de l'image ''registry:2'' du Docker Hub. | * **Registry -> image** : La registry sera un conteneur créé à partir de l'image ''registry:2'' du Docker Hub. | ||
* **restart: always** : Permet de s'assure de démarrer Docker Registry en tant que service dès que vous démarrez le système. | * **restart: always** : Permet de s'assure de démarrer Docker Registry en tant que service dès que vous démarrez le système. | ||
+ | |||
+ | Lancer les conteneurs de registry : | ||
+ | cd /mnt/registry | ||
+ | docker compose up -d | ||
+ | |||
+ | Pour vérifier le fonctionnement : | ||
+ | docker ps | ||
+ | docker compose ps | ||
+ | |||
+ | ==== Configuration du client Docker ==== | ||
+ | |||
+ | :!: A CORRIGER :!: | ||
+ | |||
+ | Il faut autoriser le client à utiliser une registry avec un certificat non valide. | ||
+ | |||
+ | Récupérer l'IP du conteneur et l'enregistrement ''registry.local'' au fichier ''/etc/hosts'' : | ||
+ | |||
+ | REGIP=$(docker inspect -f {{.NetworkSettings.Networks.registry_mynet.IPAddress}} nginx) | ||
+ | echo "${REGIP} registry.local" >> /etc/hosts | ||
+ | |||
+ | Editer le fichier suivant : | ||
+ | vim /etc/docker/daemon.json | ||
+ | |||
+ | Et ajouter les lignes suivantes : | ||
+ | |||
+ | { | ||
+ | "insecure-registries" : ["registry.local:443"] | ||
+ | } | ||
+ | |||
+ | Relancer le service Docker : | ||
+ | systemctl restart docker | ||
+ | |||
+ | ==== Se connecter et pousser une image sur la Registry ==== | ||
+ | |||
+ | Pour se connecter à la Registry : | ||
+ | docker login https://127.0.0.1/ | ||
+ | |||
+ | Séquence et résultat : | ||
+ | Username: benoit | ||
+ | Password: | ||
+ | WARNING! Your password will be stored unencrypted in /root/.docker/config.json. | ||
+ | Configure a credential helper to remove this warning. See | ||
+ | https://docs.docker.com/engine/reference/commandline/login/#credentials-store | ||
+ | | ||
+ | Login Succeeded | ||
+ | |||
+ | Avant de pousser une image, il faut la retagguer avec l'adresse de la registry ''127.0.0.1'' par exemple : | ||
+ | docker image tag httpd:latest 127.0.0.1/myhttpd:v1 | ||
+ | |||
+ | Ensuite on peut la pousser | ||
+ | docker push 127.0.0.1/myhttpd:v1 | ||
+ | |||
+ | Vérification : | ||
+ | curl -u benoit --insecure https://127.0.0.1/v2/_catalog | ||
+ | |||
+ | Résultat attendu : | ||
+ | Enter host password for user 'benoit': | ||
+ | {"repositories":["myhttpd"]} | ||
+ | |||
+ | ou | ||
+ | curl -u benoit --insecure https://127.0.0.1/v2/myhttpd/tags/list | ||
+ | |||
+ | Pour utiliser une image de notre Registry : | ||
+ | docker run -d 127.0.0.1/myhttpd:v1 |