Principale > Blog sul backup e sul ripristino > Come fare il backup dei contenitori Docker? Metodi di backup dei contenitori Docker.

Come fare il backup dei contenitori Docker? Metodi di backup dei contenitori Docker.

1 Star2 Stars3 Stars4 Stars5 Stars
(15 voti, media: 4,07 fuori da 5)
Loading...
Aggiornato 9th Febbraio 2023, Rob Morrison

Sebbene Docker – e tutti i container – siano in genere un po’ più recenti in un ambiente IT di produzione rispetto alla maggior parte delle altre tecnologie, è comunque necessario eseguire il backup di questi container, delle loro applicazioni e dei loro dati persistenti. Se un sistema IT di produzione produce dati persistenti, tali dati avranno probabilmente un certo valore. Potrebbero persino essere di importanza critica. Pertanto, è probabilmente necessario salvaguardare questi dati nel caso in cui si verifichi una sorta di disastro, ad esempio a seguito di una violazione dei dati o di un errore umano.

Questo argomento tratta sia la capacità di Docker di creare backup da solo, sia la capacità di varie soluzioni di terze parti di creare backup Docker completi, come Bacula Enterprise.

Backup e ripristino del contenitore Docker

Di solito si inizia con il commit del container in questione come immagine, utilizzando il seguente comando:

 

# docker commit -p [container-id] backup01
sha256:89682d4xxxxxx

Questa immagine può essere salvata come file .tar con un altro comando:

 

# docker save -o backup01.tar backup01
# ls -al | grep back
-rw——- 1 root root 178697728 Mar 31 23:35 backup01.tar

Il file .tar può anche essere salvato sul punto di montaggio NFS. Un’alternativa è quella di spingere l’immagine in questione (backup01) direttamente nel registro locale. Per farlo, dovremo prima etichettare in modo appropriato l’immagine:

 

# docker tag backup01 localhost:5000/backup-image:v1

In questo caso localhost è il nome della posizione e 5000 è il numero di porta. Entrambi possono essere modificati se necessario. È anche importante ricordare che sia il nome del tag che il repository devono essere in minuscolo, affinché il tag venga applicato correttamente. Il processo è completo con l’avvio del comando push:

 

# docker push backup-image:v1

Poiché abbiamo parlato di due metodi di backup, ci saranno anche due metodi di ripristino. Per ripristinare l’immagine di backup da un file .tar dovrà avviare il seguente comando:

 

# docker load -i /tmp/backup01.tar

La riga di comando dovrebbe mostrare le righe di stato successive se il comando è stato inserito correttamente:

 

ff91b8b5abb1: Loading layer [======================>] 2.56 kB/2.56 kB
Loaded image: backup01:latest

Un altro comando chiamato docker run può essere utilizzato per creare un contenitore da questa immagine.

Un’immagine spinta può essere estratta direttamente con un comando relativamente semplice:

 

# docker pull localhost:5000/backup-image:v1

Come nell’esempio precedente, sia il nome localhost che il numero di porta sono soggetti a modifica, se necessario.

Backup e ripristino dei volumi Docker

Un altro tipo di backup di Docker è tramite i volumi – fornitori di storage persistente per i contenitori Docker. Questi volumi devono essere sottoposti a backup per la continuità dei dati.

Quando si tratta di gestire i dati persistenti all’interno dei container Docker in esecuzione, i volumi Docker sono il modo più consigliato per gestire il tutto. Questo tipo di approccio offre diversi vantaggi. Ad esempio, i dati archiviati nel contenitore Docker tramite i volumi vengono isolati in modo efficace dal resto del file system, rendendo molto più difficile essere colpiti da cyberattacchi a livello di sistema. Tuttavia, questo tipo di isolamento rende anche più difficile creare volumi di backup Docker.

Inoltre, i volumi eliminano la necessità di preoccuparsi di GUI e UID tra il sistema di container Docker e il sistema operativo. I volumi stessi sono portatili quando si tratta di diverse installazioni Docker, il che significa che non è necessario preoccuparsi del sistema operativo dell’host. Allo stesso tempo, questo approccio portatile rende possibile la gestione dei volumi Docker con vari strumenti esterni, come l’archiviazione basata su bucket, nfs, ecc.

Poiché i volumi Docker sono al limite della necessità per creare realisticamente diversi contenitori Docker con dati persistenti, è naturale assicurarsi di avere anche volumi di backup Docker – questo tipo di dati è importante almeno quanto qualsiasi altro dato all’interno del sistema, se non di più.

Naturalmente, l’utilizzo dei volumi Docker per archiviare i dati dei container potrebbe non essere esattamente conveniente e ci sono alcuni problemi di crescita. Ad esempio, dovrebbe imparare diversi comandi per fare qualcosa di semplice come copiare le informazioni dal contenitore. Dovrebbe anche conoscere diversi comandi per poter prendere una shell su un Docker in esecuzione per poter vedere lo stato attuale.

La totalità dei dati del volume Docker potrebbe essere più difficile da rendere visibile all’interno del suo file system centralizzato, in quanto funziona in modo leggermente diverso rispetto alle posizioni di archiviazione tradizionali – e dovrebbe creare volumi di backup Docker per lo stesso scopo per cui solitamente crea backup dei suoi dati regolari.

Di solito, i volumi Docker sono gestiti dal demone Docker, tuttavia non interagiremo affatto con esso. L’idea di un volume di backup Docker è di ottenere una copia del volume come file compresso in una delle directory locali. Questa copia è il backup che stiamo cercando.

In questo esempio il nostro contenitore in questione si chiama dckr-site con il volume chiamato dckr-volume, è montato su /var/lib/dckr/content/ e vi memorizza tutti i dati.

Il primo passo consiste nell’arrestare il contenitore utilizzando il seguente comando:

 

$ docker stop dckr-site

La prossima si concentra sia sul montaggio del contenitore che sul backup del contenuto del volume:

 

$ mkdir ~/backup
$ docker run –rm –volumes-from dckr-site -v ~/backup:/backup ubuntu bash -c “cd /var/lib/dckr/content && tar cvf /backup/dckr-site.tar .”

In questo scenario:

  • il comando docker run è utilizzato per creare un nuovo contenitore,
  • –rm comando indica al sistema di rimuovere il contenitore una volta completata l’operazione;
  • –volumes-from dckr-site sta montando i volumi del contenitore sul nostro nuovo contenitore temporaneo;
  • bash -c “cd /var/lib/dckr/content && tar cvf /backup/dckr-site.tar” crea un backup da tutti i contenuti della directory /backup/

Il processo di ripristino di questi backup non è molto complicato. Inizia con la creazione di un nuovo volume con il seguente comando:

 

$ docker volume create dckr-volume-2

Quindi può utilizzare il seguente comando per ripristinare il volume da un contenitore temporaneo in un file .tar :

 

$ docker run –rm -v dckr-volume-2:/recover -v ~/backup:/backup ubuntu bash -c “cd /recover && tar xvf /backup/dckr-site.tar”

Naturalmente, dovrà montare questo nuovo volume nel nuovo contenitore per farlo funzionare correttamente:

 

$ docker run -d -v dckr-volume-2:/var/lib/dckr/content -p 80:2368 dckr:latest

Se la procedura viene eseguita correttamente, l’intero stato dell’applicazione dovrebbe essere ripristinato. È importante ricordare che questo metodo non dovrebbe essere utilizzato come unica fonte di backup, poiché i dati di backup sono ancora memorizzati sull’host e quindi andrebbero persi in caso di perdita di dati o di disastro che colpisca anche l’host.

Backup e ripristino di Docker con Bacula Enterprise

Bacula Enterprise utilizza la sua capacità modulare per consentire l’integrazione nativa di vari sistemi e servizi, compreso Docker. Il modulo Docker di Bacula offre molte utili funzioni aggiuntive accanto a quelle principali di backup e ripristino.

Il backup di Docker con Bacula Enterprise consiste in tre semplici passaggi:

  1. Lo stato attuale del contenitore viene salvato nella nuova immagine
  2. L’utility Docker viene eseguita e i dati vengono salvati
  3. L’istantanea in questione viene rimossa per liberare spazio

Il backup in questione può essere eseguito su un container in ogni stato, e il software Bacula mostra lo stato del processo di backup in ogni fase. Ogni backup dell’immagine del contenitore implica il salvataggio di un ulteriore file .tar. I backup dell’immagine sono conservati nella directory /@docker/image//.tar, mentre i backup dei container sono conservati nella directory /@docker/container//.tar.

Il processo di ripristino dei backup Docker con Bacula Enterprise è leggermente più complicato e può essere eseguito in due modi diversi:

  • Ripristina in una directory locale che utilizza il parametro where=/some/path di Bacula per indicare il percorso completo del backup da ripristinare come file o file di archivio;
  • E Ripristina nel servizio Docker, il che significa che i dati di backup saranno ripristinati con il comando where= come nuovo contenitore, senza archiviarli in primo luogo.

La personalizzazione del processo di ripristino è disponibile anche attraverso diversi parametri, come container_create, container_run e altri ancora.

Al momento della stesura di questo articolo, Bacula è una delle pochissime (o l’unica) soluzione di backup e ripristino di livello aziendale in grado di eseguire un backup completo di un ambiente Docker. Tuttavia, la disponibilità di altre soluzioni di backup Docker specializzate, combinata con la soluzione integrata di Docker, insieme al modulo Docker di Bacula, significa che esiste una gamma di scelte a disposizione dei responsabili IT che cercano un modo per salvaguardare la loro implementazione Docker di produzione.

Informazioni sull'autore
Rob Morrison
Rob Morrison è il direttore marketing di Bacula Systems. Ha iniziato la sua carriera nel marketing IT con Silicon Graphics in Svizzera, ottenendo ottimi risultati in vari ruoli di gestione del marketing per quasi 10 anni. Nei 10 anni successivi, Rob ha ricoperto anche diverse posizioni di gestione del marketing in JBoss, Red Hat e Pentaho, assicurando la crescita della quota di mercato di queste note aziende. Si è laureato all'Università di Plymouth e ha conseguito una laurea ad honorem in Digital Media and Communications e ha completato un programma di studi all'estero.
Lascia un commento

Il suo indirizzo e-mail non sarà pubblicato. I campi obbligatori sono contrassegnati da *