Pouvez-vous restaurer un conteneur sans remplacer toute la pile d’applications ?

Eva Wong est la rédactrice technique et bricoleuse résidente chez ZimaSpace. Geek depuis toujours, passionnée par les homelabs et les logiciels open source, elle se spécialise dans la traduction de concepts techniques complexes en guides accessibles et pratiques. Eva croit que l’auto-hébergement doit être amusant, pas intimidant. À travers ses tutoriels, elle donne à la communauté les moyens de démystifier les configurations matérielles, depuis la construction de leur premier NAS jusqu’à la maîtrise des conteneurs Docker.

Oui, un conteneur peut être restauré indépendamment lorsque sa configuration, ses données persistantes et ses dépendances sont clairement séparées du reste de la pile.

Sur un NAS domestique, le conteneur visible est généralement remplaçable, mais l’état de son application peut s’étendre à des montages bind, des volumes nommés, une base de données distincte, des secrets, des routes de proxy et des réseaux partagés. Une restauration sûre d’un seul service ne consiste donc pas à remettre en place un simple ID de conteneur ; elle consiste à figer le service concerné, à restaurer uniquement l’état qui lui appartient, à le recréer à partir d’une définition connue et à vérifier que les dépendances partagées ainsi que les conteneurs voisins fonctionnels restent inchangés.

Définissez l’unité de restauration avant d’arrêter quoi que ce soit

Identifiez précisément le service défaillant et répertoriez chaque objet qui lui appartient : nom du service Compose, balise ou condensat de l’image, fichier d’environnement, secrets, montages bind, volumes nommés, ports publiés, alias réseau, tâches planifiées et étiquettes du reverse proxy.

Les guides de restauration des volumes Docker séparent l’environnement d’exécution du conteneur du stockage persistant, car le volume de données peut être sauvegardé et restauré indépendamment. Un guide pratique présente une restauration distincte du conteneur et du volume, plutôt que de considérer le conteneur en cours d’exécution comme l’unique objet à récupérer.

Si l’application écrit dans une base de données ou un volume partagé, l’unité de restauration inclut cette dépendance partagée et peut ne plus être isolable en toute sécurité. Arrêtez-vous avant d’écraser quoi que ce soit, jusqu’à ce que la propriété de chaque élément soit clairement établie.

Capturez l’état sain de la pile et celui du service défaillant

Exportez ou enregistrez le fichier Compose actuel, l’environnement résolu, les condensats des images, la liste des montages, l’appartenance aux réseaux, l’état de santé et les journaux récents. Notez quels services voisins sont fonctionnels afin de définir clairement la limite d’impact de la restauration.

Une opération Compose au niveau du service peut cibler un service nommé sans tout redémarrer. Le processus de restauration d’un seul service présenté par Linux Handbook distingue un service Compose des actions portant sur toute la pile, mais précise également que les changements de configuration nécessitent une recréation plutôt qu’un simple redémarrage.

Désactivez uniquement pour le service défaillant les mises à jour automatiques et les boucles de redémarrage. Laissez les bases de données et l’infrastructure partagée fonctionner, sauf si leur cohérence exige un arrêt coordonné.

Restaurez d’abord les données dans un emplacement isolé

Restaurez la sauvegarde sélectionnée dans un répertoire temporaire ou un nouveau volume, plutôt que directement par-dessus le chemin actif. Comparez le nombre de fichiers, les propriétaires, les horodatages, les métadonnées de l’export de la base de données et la version de l’application avec l’état endommagé.

Un projet de sauvegarde de volumes décrit l’utilisation d’un conteneur temporaire créé à la demande pour monter et repeupler un volume cible, ce qui crée une voie de restauration de volume isolée avant que le service de production n’y écrive.

Pour les bases de données, utilisez autant que possible une méthode d’export ou de restauration adaptée à l’application. Une copie du système de fichiers d’une base de données en cours d’exécution peut, au mieux, être cohérente après un incident et peut échouer une fois l’ancien conteneur supprimé.

Vérifiez la copie isolée avant de changer les montages. Si la sauvegarde est illisible ou si son schéma ne correspond pas à l’image prévue, conservez l’état actuel et choisissez un autre point de restauration.

Recréez uniquement le service défaillant avec son identité d’origine

Recréez le service nommé à partir de la définition Compose enregistrée, en conservant le même nom de projet, les réseaux externes, les alias de service, les ports, les secrets, la correspondance UID/GID et les chemins persistants vérifiés.

L’accès aux montages peut encore échouer après une restauration correcte des données lorsque les propriétaires ou les étiquettes de sécurité ne correspondent plus à l’utilisateur d’exécution. Dans un cas concernant un conteneur Rocky Linux, l’accès manquant au volume a été rétabli en vérifiant la propriété et le contexte de sécurité, plutôt qu’en recopiant les données.

Démarrez le service sans supprimer les volumes ni exécuter de commandes prune sur toute la pile. Inspectez ses montages effectifs avant d’autoriser les migrations, les analyses ou les tâches en arrière-plan à modifier les données restaurées.

Reconnectez les dépendances sans les restaurer

Testez la résolution DNS et l’accès TCP depuis le conteneur restauré vers sa base de données, son cache, son fournisseur d’identité, son stockage objet et son réseau de proxy. Utilisez les mêmes noms de service et identifiants que ceux définis dans la configuration récupérée.

Si une dépendance partagée est restée fonctionnelle, ne la restaurez pas et ne la remplacez pas simplement parce que l’application ne peut pas s’y connecter. Un alias réseau manquant, un secret renouvelé, une incompatibilité de schéma ou un nom de base de données incorrect peut donner l’impression qu’une bonne dépendance est indisponible.

N’exécutez les migrations que lorsque la version restaurée de l’application et la sauvegarde de la base de données l’exigent. Sauvegardez la dépendance avant toute migration irréversible et arrêtez-vous si l’application tente d’initialiser une base de données vide.

Validez la limite du service unique avant de rétablir le trafic

Testez la connexion, les lectures, les écritures, les téléversements, les tâches planifiées, les appels d’API, l’accès via le proxy et un redémarrage contrôlé. Comparez le nombre de redémarrages, les journaux, les ports et les sommes de contrôle des données des conteneurs voisins avec la capture réalisée avant la restauration.

Le guide ZimaSpace consacré à la correspondance de l’état persistant des conteneurs applique le même principe de récupération : restaurez le détenteur de l’état, et non une enveloppe de conteneur supposée.

La restauration est terminée uniquement lorsque le service récupéré utilise les données et les dépendances prévues, que les membres fonctionnels de la pile restent intacts et qu’une nouvelle recréation produit le même résultat. Si l’état partagé ne peut pas être isolé, passez à une restauration coordonnée de la pile au lieu de forcer une restauration partielle.

Assistance et conseils

Plus à lire

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.