Docker卷备份报错: Tar: MYCONTAINER_VOLUME: Cannot stat: No such file or directory

标签 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

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

最佳答案

我想通了问题是什么 -

命令的最后一部分应该是挂载在CONTAINER中的卷的路径,而不是卷在HOST上的路径。

基本上,这个命令的公式应该是:

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 位于 HOST 的根项目目录中

3)运行

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

4) 重启容器

希望这对某人有所帮助,我当然愿意接受任何简化此过程的想法。

关于Docker卷备份报错: Tar: MYCONTAINER_VOLUME: Cannot stat: No such file or directory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56086606/

相关文章:

docker - 有没有办法对 Dockerfile 进行 lint?

ubuntu - Docker容器访问本地DNS

ruby-on-rails - 运行后无法访问docker Ruby on Rails镜像

docker - 基于 busybox 将 Linux 实用程序添加到 docker 镜像

r - 构建 Docker 镜像并指定端口后,Shiny 应用程序未显示

docker - 在PHPStorm中请求openresty + mobdebug + EmmyLua远程调试的工作配置

python - Airflow :无法配置处理程序 "processor"

mysql - 如何在docker下创建测试数据库?

git - Jenkins GitHub 插件无法选择我的凭据

python - psycopg2.OperationalError : could not connect to server: Connection refused