Registries

unregistry

Outil Go pour pousser des images Docker directement sur un serveur distant via SSH, sans registry intermédiaire. Lance un registry temporaire sur le serveur cible le temps du transfert.

unregistry est un outil Go développé par Pavel Sviderski qui permet de pousser une image Docker directement sur un serveur distant via SSH, sans avoir besoin d'un registry centralisé. Il démarre un registry Docker temporaire sur le serveur cible à travers un tunnel SSH, effectue le push, puis nettoie le registry temporaire.

C'est essentiellement un docker push sans infrastructure de registry. Utile pour les déploiements simples sur un ou quelques serveurs, ou les environnements isolés où monter un registry permanent n'est pas justifié.

Prérequis : Docker doit être installé et fonctionnel sur le serveur distant. unregistry utilise Docker pour démarrer le registry temporaire côté serveur.

Idéal pour : déploiements sur un serveur unique sans registry, environnements air-gapped avec accès SSH, équipes utilisant Docker standalone sans Kubernetes ni registry centralisé.


Informations essentielles

Origine : Pavel Sviderski (psviderski)  ·  Licence : Apache 2.0  ·  Plateformes : Linux, macOS

Liens : GitHub  ·  Releases

Support : Projet communautaire indépendant. Vérifier l'activité du dépôt avant d'adopter en production.

Fonctionnement

EtapeDescription
1Connexion SSH au serveur distant
2Démarrage d'un registry Docker temporaire sur le serveur (via docker run)
3Tunnel SSH vers le port du registry temporaire
4docker push de l'image locale vers le registry via le tunnel
5L'image est disponible dans le Docker local du serveur distant
6Arrêt et suppression du registry temporaire

Installation

# Via go install
go install github.com/psviderski/unregistry@latest

# Ou télécharger le binaire depuis les releases GitHub
# https://github.com/psviderski/unregistry/releases

Utilisation

# Pousser une image vers un serveur distant
unregistry push <image-locale> user@serveur-distant

# Exemple concret
docker build -t mon-app:latest .
unregistry push mon-app:latest deploy@192.168.1.100

# L'image est maintenant disponible sur le serveur distant
# et peut être utilisée dans docker run / docker compose
ssh deploy@192.168.1.100 docker run -d mon-app:latest

Avec une clé SSH spécifique

# Utiliser une clé SSH particulière
unregistry push mon-app:latest -i ~/.ssh/id_deploy deploy@serveur.example.com

Avec docker compose sur le serveur

# Pousser l'image puis démarrer le service
unregistry push mon-app:latest deploy@serveur.example.com
ssh deploy@serveur.example.com "cd /opt/mon-app && docker compose up -d"

Comparaison avec les alternatives

ApprochePrérequisComplexitéUsage adapté
unregistryDocker sur le serveur, SSHMinimal1-3 serveurs, déploiements simples
Registry DistributionDocker ou K8sFaibleEquipe, plusieurs serveurs
HarborKubernetesElevéeProduction enterprise
docker save | ssh ... | docker loadDocker, SSHMinimalPonctuel, sans outil dédié
Skopeo + registryDocker ou K8sFaibleCI/CD, air-gapped

Pour les déploiements impliquant plus de 3-4 serveurs ou une CI/CD régulière, un registry dédié (Distribution, Harbor) sera plus adapté. unregistry est un outil de simplicité, pas de scalabilité.


Limitation principale

unregistry nécessite Docker sur le serveur cible. Il n'est pas compatible avec :

  • des serveurs utilisant uniquement containerd ou Podman
  • des nœuds Kubernetes sans Docker Engine
  • des environnements sans accès SSH direct

Dans ces cas, Skopeo avec un registry dédié est une meilleure option.


Commandes utiles

# Push basique
unregistry push <image> user@host

# Push avec clé SSH
unregistry push <image> -i ~/.ssh/id_rsa user@host

# Vérifier que l'image est présente côté serveur
ssh user@host docker images | grep <image>

Ressources

Newsletter · 2 000+ abonnés

Reste au courant de ce qui bouge en prod

RudeOps veille devops hebdo, droit au but.

Gratuit · Sans spam · Désinscription en un clic