我正在尝试按照Docker网站上的说明备份/还原PostgreSQL数据库,但数据没有被还原。
数据库镜像使用的卷为:
VOLUME ["/etc/postgresql", "/var/log/postgresql", "/var/lib/postgresql"]
并且CMD是:
CMD ["/usr/lib/postgresql/9.3/bin/postgres", "-D", "/var/lib/postgresql/9.3/main", "-c", "config_file=/etc/postgresql/9.3/main/postgresql.conf"]
我使用以下命令创建数据库容器:
docker run -it --name "$DB_CONTAINER_NAME" -d "$DB_IMAGE_NAME"
然后我连接另一个容器手动插入一些数据:
docker run -it --rm --link "$DB_CONTAINER_NAME":db "$DB_IMAGE_NAME" sh -c 'exec bash'
psql -d test -h $DB_PORT_5432_TCP_ADDR
# insert some data in the db
<CTRL-D>
<CTRL-D>
然后创建tar存档:
$ sudo docker run --volumes-from "$DB_CONTAINER_NAME" --rm -v $(pwd):/backup ubuntu tar cvf /backup/backup.tar /etc/postgresql /var/log/postgresql /var/lib/postgresql
现在我删除了用于数据库的容器,并创建了另一个具有相同名称的容器,然后尝试恢复之前插入的数据:
$ sudo docker run --volumes-from "$DB_CONTAINER_NAME" --rm -v $(pwd):/backup ubuntu tar xvf /backup/backup.tar
但是表是空的,为什么数据没有被正确恢复?