Docker Backup e ripristino postgres

Io uso postgres docker: 9.4 image. Devo sapere come eseguire il backup e il ripristino del contenitore solo volume.

Contenitore creato Volume:

docker run -v /var/lib/postgresql/data --name dbdata postgres:9.4 /bin/true 

Uso del volume

 docker run --name=postgres --volumes-from=dbdata -d -p 6432:5432 postgres:9.4 

Contenitore Volume di backup

 docker run --volumes-from dbdata -v $(pwd):/backup postgres:9.4 tar cvf /backup/backup.tar /var/lib/postgresql/data 

Ripristinare il volume nel nuovo contenitore

 docker run --name=dbdata-new --volumes-from dbdata -v $(pwd):/backup ubuntu:14.04 /bin/sh -c 'cd /var/lib/postgresql/data && tar xvf /backup/backup.tar' 

Usa nel nuovo volume nella creazione di un nuovo contenitore postgres:

 docker run --name=postgres-new --volumes-from=dbdata-new -d -p 7532:5432 postgres:9.4 

Problema: ottengo l'errore seguente nei registri quando eseguo il nuovo contenitore.

initdb: la directory "/ var / lib / postgresql / data" esiste ma non è vuota Se si desidera creare un nuovo sistema di database, rimuovere o vuotare la directory "/ var / lib / postgresql / data" oppure eseguire initdb con un argomento diverso da "/ var / lib / postgresql / data"

Non so cosa faccio male. Può qualcuno indicare where faccio errore.

Imansible riprodurre facilmente il problema seguendo i passaggi con dati molto rudimentali (un record di una tabella un nuovo db):

 psql -U postgres -h $(boot2docker ip || echo 'localhost') -p 6432 -c "CREATE DATABASE ttt;" psql -U postgres -h $(boot2docker ip || echo 'localhost') -p 6432 -d ttt -c "CREATE table a(b int); insert into a(b) values(1);" psql -U postgres -h $(boot2docker ip || echo 'localhost') -p 6432 -d ttt -c "select * from a;" 

quando inizio il postgres-new non ottengo eccezioni nei log e i dati sembrano essere lì:

 $ psql -U postgres -h $(boot2docker ip || echo 'localhost') -p 7532 -d ttt -c "select * from a;" b --- 1 (1 row) 

data-new –volumi da dbdata -v $ (pwd): / backup ubuntu: 14.04 / bin / sh -c ' cd / var / lib / postgresql / data && tar xvf /backup/backup.tar '

Il text grassetto era il problema. Distriggersndo il backup nella cartella / var / lib / postgresql / data, il command tar ha creato / var / lib / postgresql / data all'interno della cartella sopra.

Grazie per tutto l'aiuto MyKola .