Backup dei container docker wordpress creati con immagine ufficiale
In questa piccola guida impareremo come fare il backup di un container docker wordpress che non utilizza i Volumi, ma tiene i dati dentro se stesso (cosa altamente sconsigliata).
> Articolo d'archivio del 2017, dal vecchio nutellino.it: comandi e versioni potrebbero non essere più attuali.
# archivio# docker# backup
In questa piccola guida impareremo come fare il backup di un container docker wordpress che non utilizza i Volumi, ma tiene i dati dentro se stesso (cosa altamente sconsigliata).
Facciamo l’esempio con un container generico creato con il nome nome-wordpress
Questa immagine creerà un volume interno dei dati /var/www/html/
Per poter vedere i dati dei volumi collegati dobbiamo utilizzare il comando inspect:
bash
docker inspect nome-wordpress
come si può vedere dall'output i dati sono in /var/www/html .
Ci sono due fasi, la prima si salva il docker container , se ci sono state fatte modifiche particolari, pacchetti php installati o configurazioni ad hoc.
Per trovare l'id bisogna usare docker ps -a
Quindi, procederemo ad eseguire il commit in locale del container, per poi poterlo salvare in un archvio.
nome-wordpress sarà il nome dell'immagine salvata, :backup sarà il tag che andremo ad usare
dopodichè lo si salva in un file facendo
bash
docker save nome-wordpress:backup |gzip> nome-wordpress_backup.tar.gz
Nel file nome-wordpress_backup.tar.gz avremo il backup del container in esecuzione, ma senza dati.
Per poter salvare i dati che sono dentro al container in /var/www/html/ bisogna utilizzare un piccolo container di supporto : busybox
Di seguito i parametri:
$(pwd) significa che mappiamo la directory corrente alla directory scritta dopo i : del container
/backups è la directory dentro al container busyboxy
—-rm è il parametro che indica che dopo aver eseguito il comando tar -c /var/www/html -f /backups/html_nome-wordpress.tar il container creato sarà distrutto
bash
docker run --rm-v$(pwd):/backups --volumes-from=nome-wordpress busybox tar-c /var/www/html -f /backups/html_nome-wordpress.tar
RESTORE IN UN ALTRA MACCHINA
La procedura qui dovrebbe essere un pò più semplice. Una volta che ci si è copiati i due tar, l'immagine del container nome-wordpress e i dati, bisogna procedere all'import.
Per prima cosa dobbiamo caricare in locale l'immagine del container
bash
docker load < nome-wordpress_backup.tar.gz
In questo modo facendo il comando
bash
docker images
Avremo in output una entry con il nome dell'immagine caricata
text
# output
REPOSITORY TAG IMAGE ID CREATED SIZE
nome-wordpress backup 3915f4713629 About an hour ago 419 MB
Possiamo quindi ricreare e lanciare il container dall'immagine
bash
docker run --name nome-wordpress-nuova-istanza -p8080:80 -d nome-wordpress:backup
Facendo quindi il listing dei container avviati avremo:
bash
docker images
# output
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
874bca63408e nome-wordpress:backup "docker-entrypoint..."25 seconds ago Up 23 seconds 0.0.0.0:8080->80/tcp nome-wordpress-nuova-istanza
Questo container avrà tutte le personalizzazioni dei servizi e altre configurazioni fatte in precedenza, ma non i dati del sito vecchio.
Per reimportare i dati ci faremo aiutare da un container di supporto busybox come per il backup, dove invece di eseguire il comando di salvataggio, eseguiremo il comando di estrazione tar -xvf /backups/html_nome-wordpress.tar -C / .
Ipotizziamo di essere nella stessa cartella dove abbiamo copiato i due tar
bash
docker run --rm-v$(pwd):/backups --volumes-from=nome-wordpress-nuova-istanza busybox tar-xvf /backups/html_nome-wordpress.tar -C /
In questo modo abbiamo ripristinato il container e i dati inclusi!