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
technique:docker:general:mise_en_place_d_un_registry_docker [2020/10/07 19:51] – ancienne révision (2020/09/11 15:47) restaurée qduchemitechnique:docker:general:mise_en_place_d_un_registry_docker [2022/05/24 20:50] (Version actuelle) ppom
Ligne 1: Ligne 1:
-======Mise en place d'un registry Docker====== +{{indexmenu_n>40}} 
-Lorsque l'on utilise Docker, il y a différentes possibilités pour utiliser nos propres images.  +# Registre Docker pour stocker les images 
-====Build manuel==== + 
-La première solution sans doute la plus simple consiste à mettre le Dockerfile sur les machines qui nous intéresse et à builder cette image localement à l'aide de la commande:+À partir d'un `Dockerfile`, on peut construire une image. L'intérêt d'une image est d'être ré-utilisable. 
 + 
 +<bootnote question>Comment permettre à d'autres personnes de ré-utiliser mon image ?</bootnote> 
 + 
 +## Partager le Dockerfile 
 + 
 +La première solution sans doute la plus simple consiste à mettre le `Dockerfilesur les machines qui nous intéressent et à construire cette image localement à l'aide de la commande :
  
 <code bash> <code bash>
 $ docker build -t mon_image . $ docker build -t mon_image .
 </code> </code>
-Cette solution fonctionne, mais est longue. En cas de changement sur l'image, il faut rebuilder toute l'image ce qui peut prendre quelques minutes.  
  
-====Docker Hub==== +Similairement, je peux partager mon `Dockerfile` avec d'autres personnes, et les laisser la construire.
-La seconde solution est d'utiliser un registry mis en place par docker. Il permet de stocker ses images de manière centralisée. En cas de modificationon ne rebuild qu'une seule fois l'image. On la pousse ensuite sur le registry et il suffit de tirer la dernière version sur nos machines pour mettre à jour nos images.  +
-Cette solution fonctionne bien, mais impose d'exposer publiquement ses images sur le Hub. À cela, on ne sait pas comment sont stockées ni même où sont stockées nos images+
  
-====Registry privé==== +Cette solution fonctionne, mais présente plusieurs problèmes :
-La solution du registry privé permet d'avoir les avantages des deux solutions précédentes. Un registry privé est un entrepôt qui permet d'héberger des images Docker et qui est auto hébergé. Cela permet de savoir exactement où sont nos images et de centraliser celles-ci à un seul endroit. +
  
-=====Mise en place=====+* Un `Dockerfile` n'assure pas forcément un build **reproductible** : à partir du même `Dockerfile`, on pourra obtenir deux images différentes dans le temps 
 +* Construire une image peut être long (téléchargement de paquets, compilation...) : c'est très consommateur de ressource.
  
-On utilise les fichiers présents sur le dépôt `dockerfiles`et les instructions associées : https://gitlab.utc.fr/picasoft/projets/dockerfiles/-/tree/master/pica-registry+Une solution idéale serait de pouvoir partager directement ses imagesune fois construites.
  
-Maintenant que le registy est prêt, on peut builder et lui pousser des images:+## Docker Hub 
 + 
 +C'est ce que propose le [Docker Hub](https://hub.docker.com/) : un espace où n'importe peut téléverser ses images et télécharger les images des autres. Ainsi, à chaque utilisation de l'image, il n'y a qu'à la télécharger, et on a l'assurance que ça sera la même image partout où on la télécharge. 
 + 
 +À chaque modification du `Dockerfile`, il n'y a besoin de reconstruire l'image qu'une seule fois puis de la tirer partout où c'est nécessaire. 
 + 
 +Cette solution fonctionne bien, mais impose d'exposer publiquement ses images sur le Hub. 
 + 
 +<bootnote important>Il y a d'autres problèmes plus importants. Le Docker Hub est complètement centralisé, ce qui nous rend dépendant à une entité qu'on ne maîtrise pas et qui change régulièrement ses conditions générales d'utilisation (en particulier autour de la période de rétention des images). Le jour où Docker décide par exemple de faire payer son service, nous ne pourrons pas nous y opposer.</bootnote> 
 + 
 +## Registre privé 
 + 
 +La solution retenue consiste à utiliser un registre privé pour stocker nos images. En opposition, le Docker Hub est un registre public. 
 + 
 +<bootnote>Un registre Docker est simplement un logiciel qui permet de téléverser et de télécharger des images Docker.</bootnote> 
 + 
 +Ainsi, on est pas obligé de reconstruire les images chaque fois que l'on veut les utiliser, on peut les partager avec qui on veut, et on maîtrise l'infrastructure de bout en bout. 
 + 
 +## Utilisation 
 + 
 +<bootnote web>Notre registre privé est déployé avec les fichiers présents sur le dépôt [registry](https://gitlab.utc.fr/picasoft/projets/services/registry) (voir [[technique:docker:picasoft:dockerfiles|gestion des services]]).</bootnote> 
 + 
 +On peut alors pousser des images sur le registre comme suit :
  
 <code bash> <code bash>
 +# Exemple de construction d'image
 $ docker build -t monimage . $ docker build -t monimage .
 $ docker tag monimage registry.picasoft.net/monimage:v1 $ docker tag monimage registry.picasoft.net/monimage:v1
 +# Pourrait être
 +$ docker-compose build
 +# Pousser l'image sur le registre privé
 $ docker push registry.picasoft.net/monimage:v1 $ docker push registry.picasoft.net/monimage:v1
 </code> </code>
  
-Sur les clientil faut au préalable se logger:+Sur une autre machinela récupération de l'image est symétrique :
  
 +<code bash>
 +$ docker pull registry.picasoft.net/monimage:v1
 +</code>
 +
 +<bootnote warning>Sur les client, il faut au préalable se connecter au registre de production. Les identifiants sont les mêmes que sur les machines, le wiki, le Cloud...
 <code bash> <code bash>
 $ docker login registry.picasoft.net $ docker login registry.picasoft.net
-Username (pica)pica+Username: <ton login>
 Password: Password:
 Login Succeeded Login Succeeded
 </code> </code>
-<code bash> 
-$ docker pull registry.picasoft.net:5000/monimage:v1 
-</code> 
- 
-=====Archi Picasoft===== 
-Picasoft possède son propre registry privé. Celui-ci se trouve sur la machine ''monitoring''. (Voir architecture globale picasoft) 
  • technique/docker/general/mise_en_place_d_un_registry_docker.1602093085.txt.gz
  • de qduchemi