Aller au contenu

Registre de conteneurs (Docker / OCI)

Poussez et récupérez des images de conteneurs avec le CLI Docker standard — aucun plugin, aucun client personnalisé. Chaque image passe par le même pipeline antivirus et CVE que vos autres formats de paquets avant de devenir servable.

Prérequis

  • Le serveur de dépôt Repod est démarré et accessible depuis la machine cliente
  • Votre compte a le rôle uploader, maintainer ou admin pour pousser une image ; tout compte authentifié (ou, pour un dépôt ouvert, non authentifié) peut la récupérer
  • Pour tout ce qui dépasse un test local : TLS configuré (docker-compose.tls.yml) — le CLI Docker refuse par défaut de parler à un registre en HTTP simple

Étape 1 — Se connecter

docker login YOUR_HOST:5443 -u YOUR_USERNAME -p YOUR_PASSWORD_OR_API_TOKEN

Utilisez votre mot de passe de compte Repod habituel, ou un jeton API (repod_...) pour la CI/CD — les mêmes identifiants que pour tout autre point de terminaison authentifié. Repod émet en coulisses un jeton bearer signé à courte durée de vie, via le protocole standard OCI Distribution Bearer Token (le même qu'utilisent Docker Hub et GHCR) — le CLI Docker gère cette négociation automatiquement, rien à configurer.

Comptes SaaS — préfixez votre nom d'utilisateur avec votre organisation

Sur Repod SaaS, le registre de conteneurs est une adresse unique partagée par toutes les organisations (il n'existe pas de sous-domaine par organisation pour docker login comme pour le reste de l'application) — l'organisation doit donc voyager dans le nom d'utilisateur :

docker login YOUR_HOST:5443 -u YOUR_ORG_SLUG+YOUR_USERNAME -p YOUR_PASSWORD_OR_API_TOKEN
Utilisez +, pas : — l'authentification HTTP Basic utilise elle-même : pour séparer le nom d'utilisateur du mot de passe, donc un : à l'intérieur du nom d'utilisateur serait absorbé dans le mot de passe au lieu d'atteindre Repod. Vos images vivent ensuite dans l'espace de noms propre à votre organisation — voir l'étape de push ci-dessous. Ceci ne s'applique qu'au SaaS ; les déploiements on-premise/CE utilisent un nom d'utilisateur simple comme montré ci-dessus.

Test local / dev sans TLS

Si vous n'avez pas encore configuré TLS, ajoutez votre hôte à la liste des registres non sécurisés de Docker plutôt que de lutter contre l'exigence HTTPS du client :

/etc/docker/daemon.json
{ "insecure-registries": ["YOUR_HOST:PORT"] }
Redémarrez le démon Docker après avoir modifié ce fichier. Utilisez un vrai certificat TLS avant de pousser quoi que ce soit d'important — voir Reverse proxy.


Étape 2 — Pousser une image

docker tag my-app:1.0.0 YOUR_HOST:5443/my-app:1.0.0
docker push YOUR_HOST:5443/my-app:1.0.0

Le dépôt (my-app ci-dessus) est créé automatiquement au premier push réussi — aucun pré-enregistrement nécessaire, le même modèle de dépôt dynamique qu'utilisent Maven, PyPI et npm.

Comptes SaaS — préfixez le nom de l'image avec votre organisation

docker tag my-app:1.0.0 YOUR_HOST:5443/YOUR_ORG_SLUG/my-app:1.0.0
docker push YOUR_HOST:5443/YOUR_ORG_SLUG/my-app:1.0.0
Le registre lui-même est partagé par toutes les organisations de la plateforme — le slug de votre organisation dans le nom de l'image est ce qui maintient vos images dans votre propre espace de noms. Un push vers un nom en dehors de l'espace de noms de votre organisation est rejeté. Ceci reflète le fonctionnement des organisations Docker Hub ou des espaces de noms GHCR (docker push ghcr.io/your-org/my-app).

Derrière le push, Repod scanne chaque couche avec le même pipeline antivirus + CVE utilisé pour les paquets .deb/.rpm/.apk. Selon votre politique CVE, une image est soit publiée immédiatement, soit atterrit dans la même file de revue déjà utilisée par votre équipe sécurité pour les paquets OS — voir Pipeline de sécurité.


Étape 3 — Récupérer une image

docker pull YOUR_HOST:5443/my-app:1.0.0

Si le dépôt est ouvert (comportement par défaut), aucune connexion n'est requise pour récupérer l'image. S'il a été restreint (voir ci-dessous), la récupération nécessite les mêmes identifiants que le push.


Importer une image publique

Vous n'avez pas besoin de construire localement pour faire entrer une image dans Repod. Depuis l'interface web (Registre de conteneurs → Importateur) ou l'API, pointez Repod vers une image Docker Hub publique et un tag — il télécharge l'image, la fait passer par le même pipeline antivirus + CVE, et la publie (ou la met en file de revue) sans jamais toucher votre démon Docker local.


Contrôle d'accès

Par défaut, tout nom de dépôt est ouvert au push pour les comptes uploader/maintainer/admin, et ouvert à la récupération pour tout le monde. Pour restreindre un dépôt spécifique à certains rôles ou groupes, utilisez le point de terminaison de contrôle d'accès aux dépôts (admin uniquement) — le même modèle utilisé dans tous les formats de Repod : aucune ligne signifie ouvert, admin contourne toujours la restriction, et un refus en lecture renvoie 404 plutôt que 403 afin que l'existence d'un dépôt restreint ne soit pas révélée à quelqu'un qui n'y a pas accès.