Qu'est ce qu'un registre | CodeFirst Allez directement au contenu

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.


BesoinRegistre d’images DockerRegistre de paquets
Ce qu’on stockeImages 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’artefactregistry.gitlab.com/ns/projet/app:1.2.3npm: @org/mon-package@1.2.3, NuGet: Mon.Package.1.2.3.nupkg
Usage principalDéployer/runner un service (Kubernetes, Docker, Compose, CI jobs)Réutiliser du code dans plusieurs projets (lib front, SDK, utils, etc.)
VersionnementPar tag d’image (ex: 1.2.3, sha-…)Par version de package (SemVer)
TailleSouvent grosse (images multi‑couches)Plutôt légère (archives de code)
Politique de rétentionNettoyer tags/images obsolètesNettoyer 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éployerContainer 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 n dernières par branche/tags).
  • Package Registry : supprimer les versions deprecated, vulnérables, ou jamais consommées; maintenir un LATEST lisible.