imglife sync
Synopsis
Section intitulée « Synopsis »imglife sync [nom] [flags]Copie les images upstream listées dans sync.entries vers votre registry OCI privé. Pour les sources Docker Hub, la résolution des tags utilise l’API Docker Hub (dates + liste de tags en un seul appel).
Quand l’argument optionnel [nom] est fourni, seules les entrées dont le nom de miroir correspond sont synchronisées. Le nom de miroir est le dernier segment du target de l’entrée (ex. alpine pour registry.example.com/mirrors/alpine). Plusieurs entrées peuvent partager le même nom de miroir — toutes sont alors synchronisées. Sans argument, toutes les entrées configurées sont synchronisées.
| Flag | Défaut | Description |
|---|---|---|
--dry-run |
false |
Simuler la synchronisation sans pousser d’images |
--list |
false |
Afficher la liste des tags qui seraient synchronisés et quitter |
--force |
false |
Écraser les images existantes dans le registry |
Exemples
Section intitulée « Exemples »# Synchroniser toutes les entrées configuréesimglife sync
# Synchroniser uniquement les entrées ciblant le miroir "alpine"imglife sync alpine
# Aperçu — afficher ce qui serait synchroniséimglife sync --list
# Dry-run — simuler sans pousserimglife sync --dry-run
# Force — écraser les images déjà présentes dans le registryimglife sync --force
# Avec logs verbeuximglife --log-format text --log-level debug syncConfiguration
Section intitulée « Configuration »Le comportement de sync est contrôlé par sync.entries dans imglife.yaml. Voir la référence de configuration sync.
Exemple minimal :
sync: entries: - source: docker.io/library/alpine tag_regex: '^3\.\d+\.\d+$' keep_last: 3 target: registry.example.com/mirrors/alpineFonctionnement de la résolution des tags
Section intitulée « Fonctionnement de la résolution des tags »Pour les sources Docker Hub, imglife récupère les tags avec leurs dates de création en un seul appel API, puis :
- Filtre les tags correspondant à
tagoutag_regex. - Trie par version sémantique (fallback par date pour les tags non-semver).
- Conserve les
keep_lastplus récents.
Re-synchronisation par digest
Section intitulée « Re-synchronisation par digest »Par défaut, imglife ignore un tag s’il existe déjà dans la cible. Utilisez --force pour écraser systématiquement tout tag existant, ou définissez check_digest: true sur une entrée pour re-synchroniser quand le digest upstream a changé :
- source: docker.io/library/alpine tag: latest target: registry.example.com/mirrors/alpine check_digest: trueParallélisme
Section intitulée « Parallélisme »export IMGLIFE_SYNC_PARALLELISM=4 # synchronisations concurrentes (défaut : 4)Comportement de retry
Section intitulée « Comportement de retry »Les syncs échoués sont retentés avec backoff exponentiel :
export IMGLIFE_RETRY_ATTEMPTS=3 # défaut : 3export IMGLIFE_RETRY_INITIAL_DELAY=2s # défaut : 2sexport IMGLIFE_RETRY_BACKOFF=2 # défaut : 2 (multiplicateur)export IMGLIFE_RETRY_TIMEOUT=60s # timeout par opérationRapport de fin d’exécution
Section intitulée « Rapport de fin d’exécution »Après chaque exécution (pas en mode --list), imglife affiche un résumé sur stdout :
Sync Summary · 4.2s ─────────────────────────────────── Mirror images managed 12 ├─ Synced 8 ├─ Up-to-date 4 └─ Errors 0En mode --dry-run, l’en-tête est préfixé par [dry-run]. Définir NO_COLOR=1 ou TERM=dumb pour désactiver les couleurs ANSI.
Codes de sortie
Section intitulée « Codes de sortie »| Code | Signification |
|---|---|
0 |
Toutes les entrées synchronisées avec succès |
1 |
Une ou plusieurs entrées ont échoué |