Docker卷备份错误:Tar:MYCONTAINER_VOLUME:无法统计:没有这样的文件或目录

时间:2019-05-11 01:59:21

标签: docker

我正在尝试按docker文档中的此处所述备份我的卷:https://docs.docker.com/storage/volumes/#backup-restore-or-migrate-data-volumes

我正在运行带有卷路径的命令:

docker run --rm --volumes-from MYCONTAINER -v $(pwd):/backup ubuntu tar cvf /backup/backup.tar /var/lib/docker/volumes/MYCONTAINER_VOLUME

...并尝试仅输入我的卷名

docker run --rm --volumes-from MYCONTAINER -v $(pwd):/backup ubuntu tar cvf /backup/backup.tar MYCONTAINER_VOLUME

但是无论我遇到什么错误,例如:tar: MYCONTAINER_VOLUME: Cannot stat: No such file or directory

已创建此卷,并使用docker-compose将该卷链接到容器,并使用该卷的本地驱动程序将其链接到容器。

运行docker volume ls会得到:

DRIVER              VOLUME NAME

local               MYCONTAINER_VOLUME

有人可以告诉我我在做什么错吗?

2 个答案:

答案 0 :(得分:1)

我弄清楚了问题所在-

命令的最后一部分应该是CONTAINER中装载的卷的路径,而不是主机上的卷的路径。

因此,基本上,此命令的公式应为:

docker run --rm --volumes-from MYCONTAINER -v $(pwd):/backup ubuntu tar cvf /backup/MY_BACKUP.tar /PATH/INSIDE/CONTAINER/TO/VOLUME/data

...,这将在主机的当前目录中创建MY_BACKUP.tar

另外,如果在我的情况下类似postgres,请确保在归档卷之前先停止容器。

然后,如果您使用的是docker-compose,则要还原该卷(因为我也遇到了麻烦,因为该文档并非专门针对以这种方式创建的预先存在的容器/卷)

1)停止容器

2)确保MY_BACKUP.tar位于主机的根项目目录中

3)运行

docker run --rm --volumes-from MYCONTAINER -v $(pwd):/backup ubuntu bash -c "cd / && tar xvf /backup/MY_BACKUP.tar

4)重新启动容器

希望这对某人有帮助,我当然乐于接受任何简化此想法的想法。

答案 1 :(得分:0)

The documentation假定您的容器确实具有与您的容器相关联的卷。
含义:您的container was started with a volume
示例:

$ docker run -d \
  --name devtest \
  --mount source=myvol2,target=/app \
  nginx:latest

至少检查是否使用以下方法创建了卷:

docker volume ls