Qu'est ce qu'un registre
Différence entre un registre d’images Docker et un registre de paquets
Dans un workflow DevOps (ex: GitLab), on confond souvent Container Registry (images Docker exécutables) et Package Registry (dépendances applicatives: npm, NuGet, Python, etc.). Cette page explique la différence, montre quand utiliser l’un ou l’autre, et donne des exemples concrets avec GitLab.
| Besoin | Registre d’images Docker | Registre de paquets |
|---|---|---|
| Ce qu’on stocke | Images de conteneurs prêtes à l’exécution (app + dépendances + OS/base) | Bibliothèques/packages consommés comme dépendances par d’autres apps |
| Exemple d’artefact | registry.gitlab.com/ns/projet/app:1.2.3 | npm: @org/mon-package@1.2.3, NuGet: Mon.Package.1.2.3.nupkg |
| Usage principal | Déployer/runner un service (Kubernetes, Docker, Compose, CI jobs) | Réutiliser du code dans plusieurs projets (lib front, SDK, utils, etc.) |
| Versionnement | Par tag d’image (ex: 1.2.3, sha-…) | Par version de package (SemVer) |
| Taille | Souvent grosse (images multi‑couches) | Plutôt légère (archives de code) |
| Politique de rétention | Nettoyer tags/images obsolètes | Nettoyer versions de packages obsolètes |
1) Registre d’images Docker (Container Registry)
Un registre Docker stocke des images — des instantanés exécutables de votre application. Chaque image contient le runtime, les dépendances et une base (ex: alpine, debian).
-
URL et nommage (GitLab) :
registry.gitlab.com/<namespace>/<projet>/<image>:<tag>
2) Registre de paquets (Package Registry)
Un registre de paquets héberge des dépendances (libs/modules) réutilisables. GitLab supporte notamment npm et NuGet (mais aussi Maven, Composer, PyPI, etc.).
Bonnes pratiques
- SemVer clair (
MAJOR.MINOR.PATCH). - Release automation (tags = versions publiées).
- Scopes/permissions minimales pour les tokens.
- Deprecate/retirer les versions vulnérables.
Quand utiliser quoi ?
- Application à déployer → Container Registry (image Docker).
- Lib à réutiliser par plusieurs apps → Package Registry (npm/NuGet…).
- Beaucoup d’équipes font les deux : une lib (Package Registry) consommée par un service… packagé en image (Container Registry) pour le déploiement.
Sécurité & accès
- Utiliser CI_JOB_TOKEN quand c’est possible en CI (scopé au projet, éphémère).
- Utiliser des PAT (tokens personnels) avec scopes minimaux pour usage local.
- Ne committez jamais un token en clair (utiliser variables GitLab CI/CD).
- Activer l’immuabilité des tags/version si la plateforme le permet.
Nettoyage & rétention
- Container Registry : supprimer régulièrement les tags anciens, images orphelines, activer des policies (ex : garder
ndernières par branche/tags). - Package Registry : supprimer les versions deprecated, vulnérables, ou jamais consommées; maintenir un
LATESTlisible.