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/09/30 16:34] – ↷ Page déplacée de technique:docker:mise_en_place_d_un_registry_docker à technique:docker:general:mise_en_place_d_un_registry_docker qduchemitechnique:docker:general:mise_en_place_d_un_registry_docker [2022/05/24 20:50] (Version actuelle) ppom
Ligne 1: Ligne 1:
-{{indexmenu_n>30}} +{{indexmenu_n>40}} 
-======Mise en place d'un registre privé Docker====== +# Registre Docker pour stocker les images 
-Lorsque l'on utilise Docker, il y a différentes possibilités pour utiliser nos propres images.  + 
-====Build manuel==== +À partir d'un `Dockerfile`, on peut construire une image. L'intérêt d'une image est d'être ré-utilisable. 
-La première solution sans doute la plus simple consiste à mettre le Dockerfile sur les machines qui nous intéressent et à construire cette image localement à l'aide de la commande :+ 
 +<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 reconstruire 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 DockerIl permet de stocker ses images de manière centraliséeEn cas de modification, on ne reconstruit qu'une seule fois l'image. On la pousse ensuite sur+Cette solution fonctionne, mais présente plusieurs problèmes : 
 + 
 +* 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. 
 + 
 +Une solution idéale serait de pouvoir partager directement ses images, une fois construites. 
 + 
 +## 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'imageil 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> 
 +# Exemple de construction d'image 
 +$ docker build -t monimage . 
 +$ 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 
 +</code> 
 + 
 +Sur une autre machine, la 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> 
 +$ docker login registry.picasoft.net 
 +Username: <ton login> 
 +Password: 
 +Login Succeeded 
 +</code>
  • technique/docker/general/mise_en_place_d_un_registry_docker.1601476442.txt.gz
  • de qduchemi