Outils pour utilisateurs

Outils du site


informatique:docker:registrydocker

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

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:38]
benoit [Création du fichier Docker compose]
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 répertoires ​====+==== Préparation des dossiers et fichiers requis ​====
  
 On va créer une Registry délivrée via un serveur nginx. ​ On va créer une Registry délivrée via un serveur nginx. ​
Ligne 17: Ligne 18:
   mkdir -p nginx/​{conf.d,​ssl}   mkdir -p nginx/​{conf.d,​ssl}
  
-==== Création du fichier Docker compose ​====+Aller dans :  
 +  cd nginx/​conf.d/​ 
 + 
 +Créer du fichier de configuration de la registry : 
 +  vim registry.conf 
 +   
 +Insérer le contenu suivant : 
 +  upstream docker-registry { 
 +      server registry:​5000;​ 
 +  } 
 +   
 +  server { 
 +      listen 80; 
 +      server_name registry.local;​ 
 +      return 301 https://​registry.local$request_uri;​ 
 +  } 
 +   
 +  server { 
 +      listen 443 ssl http2; 
 +      server_name registry.local;​ 
 +   
 +      ssl_certificate /​etc/​nginx/​ssl/​fullchain.pem;​ 
 +      ssl_certificate_key /​etc/​nginx/​ssl/​privkey.pem;​ 
 +   
 +      # Log files for Debug 
 +      error_log ​ /​var/​log/​nginx/​error.log;​ 
 +      access_log /​var/​log/​nginx/​access.log;​ 
 +   
 +      location / { 
 +          # Do not allow connections from docker 1.5 and earlier 
 +          # docker pre-1.6.0 did not properly set the user agent on ping, catch "Go *" user agents 
 +          if ($http_user_agent ~ "​^(docker\/​1\.(3|4|5(?​!\.[0-9]-dev))|Go ).*$" )  { 
 +              return 404; 
 +          } 
 +   
 +          proxy_pass ​                         http://​docker-registry;​ 
 +          proxy_set_header ​ Host              $http_host;​ 
 +          proxy_set_header ​ X-Real-IP ​        ​$remote_addr;​ 
 +          proxy_set_header ​ X-Forwarded-For ​  ​$proxy_add_x_forwarded_for;​ 
 +          proxy_set_header ​ X-Forwarded-Proto $scheme; 
 +          proxy_read_timeout ​                 900; 
 +      } 
 +  } 
 + 
 + 
 +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é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 68: 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
informatique/docker/registrydocker.1700807909.txt.gz · Dernière modification: 2023/11/24 07:38 par benoit