È possibile ripristinare un’immagine del container senza perdere i dati dell’app?

Eva Wong è la Technical Writer e smanettatrice residente di ZimaSpace. Una geek da sempre con una passione per homelab e software open-source, si specializza nel tradurre concetti tecnici complessi in guide accessibili e pratiche. Eva crede che l'auto-ospitare debba essere divertente, non intimidatorio. Attraverso i suoi tutorial, dà potere alla comunità di demistificare le configurazioni hardware, dalla costruzione del loro primo NAS al dominio dei container Docker.

Sì, puoi ripristinare un’immagine del container senza perdere i dati dell’app quando lo stato persistente si trova al di fuori del container e rimane compatibile con la versione precedente.

Su un NAS domestico, la sostituzione dell’immagine ricrea normalmente solo l’ambiente di esecuzione dell’applicazione, mentre i volumi denominati o i bind mount conservano database, impostazioni e file degli utenti. Il punto critico sono le modifiche allo schema: un’immagine più recente potrebbe migrare il database o riscrivere la configurazione in un modo che la versione precedente non è in grado di leggere. Prima del ripristino, acquisisci i mount correnti, l’identità dell’immagine, la configurazione, i segreti e un backup coerente dei dati.

Blocca lo stato corrente prima di modificare l’immagine

Disattiva gli aggiornamenti automatici delle immagini e annota il tag dell’immagine corrente, il digest immutabile, la configurazione del container, le variabili d’ambiente, le reti, le porte, i mount, la politica di riavvio e il controllo di integrità. Salva il file Compose o la configurazione esportata separatamente dal container.

Un flusso di lavoro per il ripristino dei container su NAS consiglia di conservare un’immagine precedente nota e disponibile, invece di affidarsi a un tag mobile come latest. Il punto di ripristino utilizzabile è la versione specifica dell’immagine precedente, insieme alla configurazione con cui è stata eseguita.

Esegui un backup o uno snapshot coerente del database dell’applicazione prima di arrestare la versione più recente. Non dare per scontato che il volume esistente sia una copia adatta al ripristino, perché potrebbe contenere già modifiche allo schema o ai dati apportate dall’aggiornamento.

Verifica che i dati dell’app siano archiviati al di fuori del livello scrivibile

Mappa ogni volume denominato e bind mount, quindi individua eventuali database, caricamenti, plugin, certificati, cache o configurazioni ancora memorizzati esclusivamente nel livello scrivibile del container.

Lo spazio di archiviazione persistente sopravvive alla sostituzione del container solo quando il nuovo container si ricollega alla stessa posizione esterna dei dati. Il flusso di lavoro di SynoForum per la gestione delle versioni delle immagini verifica esplicitamente che i dati dei volumi rimangano nell’archiviazione del NAS prima di ricreare un container da un’altra immagine.

Se i dati critici esistono solo nel livello scrivibile, copiali o esportali prima di rimuovere il container corrente. Considera questa estrazione una procedura di ripristino, non un motivo per mantenere indefinitamente un container senza versionamento.

Blocca la versione esatta dell’immagine precedente invece di riutilizzare Latest

Scarica o individua il tag o il digest dell’ultima versione sicuramente funzionante e aggiorna solo il riferimento all’immagine. Verifica l’architettura, l’edizione dell’applicazione e le variabili d’ambiente necessarie prima di ricreare il servizio.

Gli utenti che ripristinano servizi gestiti con Compose tornano comunemente a una versione esplicita precedente dell’immagine, invece di chiedere a Docker di invertire un container in esecuzione. Una discussione pratica sul ripristino ruota attorno alla modifica del tag dell’immagine Compose bloccato e alla ricreazione del servizio.

Non utilizzare una vecchia immagine memorizzata nella cache di cui non conosci l’identità. Dopo il download, annota il digest, così una nuova compilazione non selezionerà silenziosamente un binario diverso sotto lo stesso tag modificabile.

-15% OFF

Verifica se la versione più recente ha modificato il database

Leggi le note di rilascio dell’applicazione e i log delle migrazioni per le versioni comprese tra quella di destinazione del ripristino e l’immagine corrente. Cerca modifiche irreversibili allo schema, riscritture della configurazione, cambiamenti delle chiavi di crittografia o aggiornamenti dei plugin.

Il ripristino del database è più complesso di quello dell’immagine, perché il codice dell’applicazione e lo schema devono rimanere compatibili. Octopus descrive le migrazioni compatibili con le versioni precedenti come un requisito quando le versioni vecchia e nuova dell’applicazione possono coesistere o essere invertite, rendendo la compatibilità dello schema tra le versioni il fattore decisivo per il ripristino.

Se l’immagine precedente non riesce a leggere il database migrato, ripristina il backup del database precedente all’aggiornamento invece di puntare il vecchio codice al nuovo stato. Conserva separatamente il database corrente nel caso sia necessario annullare anche il ripristino.

Ricrea il servizio utilizzando gli stessi percorsi persistenti

Arresta e ricrea il container dell’applicazione utilizzando l’immagine precedente, mantenendo gli stessi volumi denominati o bind mount verificati. Non utilizzare comandi o opzioni dell’interfaccia che rimuovono i volumi.

Mantieni coerenti i nomi delle reti, gli alias dei servizi, le porte pubblicate, le mappature UID/GID, i segreti e le destinazioni del proxy inverso, salvo che la versione precedente richieda una differenza documentata. L’avvio corretto del container con mount errati può creare una nuova app vuota e sembrare una perdita di dati.

Controlla l’elenco dei mount e i log dell’applicazione prima di accedere o consentire l’esecuzione dei processi in background. Se l’app inizializza un nuovo database, arrestala immediatamente e correggi il percorso dei dati invece di importare i dati nella posizione errata.

Convalida il ripristino e mantieni un percorso di recupero in avanti

Verifica l’accesso, la lettura e la scrittura del database, i caricamenti, i processi pianificati, le integrazioni e un riavvio controllato. Confronta un campione di record e file con l’inventario precedente al ripristino.

Il flusso di lavoro di ZimaSpace per gli snapshot dei dati dell’app prima dell’aggiornamento offre una preparazione più sicura per gli aggiornamenti futuri.

Il ripristino è completo solo quando la vecchia immagine utilizza i dati persistenti corretti, lo schema è compatibile o è stato ripristinato e il servizio sopravvive a un’ulteriore ricreazione. Conserva la versione più recente dell’immagine, il relativo backup dei dati e le note sul ripristino finché la versione precedente non sarà rimasta stabile per l’intero normale periodo di utilizzo.

Supporto e consigli

Altro da leggere

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.