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 07:46] benoit [Préparation des répertoires] |
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 62: | Ligne 63: | ||
| + | Créer le fichier : | ||
| + | vim additional.conf | ||
| + | Ajouter le paramètre permettant à nginx de prendre en charge des fichiers jusqu'à 2Go | ||
| + | client_max_body_size 2G; | ||
| - | ==== Création du fichier Docker compose ==== | + | Créer le certificat SSL de notre registry : |
| + | cd /mnt/registry/nginx/ssl | ||
| + | openssl genrsa -out privkey.pem 2048 | ||
| + | openssl req -new -sha256 -key /mnt/registry/nginx/ssl/privkey.pem -out ${HOME}/request.csr -subj "/C=FR/ST=Paris/L=Paris/O=Company/OU=IT Department/CN=registry.local" | ||
| + | openssl x509 -req -days 365 -in ${HOME}/request.csr -signkey /mnt/registry/nginx/ssl/privkey.pem -out /mnt/registry/nginx/ssl/fullchain.pem | ||
| + | |||
| + | Pour retreindre l'accès à la registry, nous allons créer un compte utilisateur : | ||
| + | cd /mnt/registry/auth/ | ||
| + | htpasswd -Bc registry.passwd benoit | ||
| + | |||
| + | ==== Préparation de lancement des conteneur pour la Registry ==== | ||
| Créer un fichier Docker compose : | Créer un fichier Docker compose : | ||
| Ligne 115: | 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 | ||