当前位置: 首页 > 知识库问答 >
问题:

无法备份docker卷

钱卓君
2023-03-14

我从这里按照官方的docker指南备份docker卷。我也知道这个SO问题,但是我仍然遇到错误。运行以下命令:

docker run --rm --volumes-from dbstore -v $(pwd):/backup ny_db_1 tar cvf /backup/backup.tar /dbdata

无论我输入什么图像名称、容器名称或容器id,都会出现以下错误:

Unable to find image 'ny_db_1:latest' locally

我要备份的卷:

$ docker volume ls
DRIVER              VOLUME NAME
local               ny_postgres_data

我的容器:

$ docker ps
CONTAINER ID        IMAGE                  COMMAND                  CREATED             STATUS              PORTS                    NAMES
39e71e660eda        postgres:10.1-alpine   "docker-entrypoint.s…"   4 days ago          Up 23 minutes       0.0.0.0:5434->5433/tcp   ny_db_1

如何备份我的卷?

更新:

我尝试了以下操作,但遇到了一个新错误:

$ docker run --rm --volumes-from 39e71e660eda -v $(pwd):/backup postgres:10.1-alpine tar:local cvf /backup/backup.tar /dbdata


/usr/local/bin/docker-entrypoint.sh: line 145: exec: tar:local: not found

共有2个答案

单于轶
2023-03-14

试试这里的命令:

docker run -it --rm -v ny_postgres_data:/volume -v /tmp:/backup ny_db_1 \
    tar -cjf /backup/ny_postgres_data -C /volume ./
杨选
2023-03-14

docker run语法是docker run[OPTIONS]IMAGE[: TAG|@DIGEST][COMMAND][ARG...]-ny_db_1是容器的名称,docker将尝试使用不存在的IMAGE"ny_db_1",因此出现错误:"无法在本地找到图像'ny_db_1:最新的'"(如果没有指定,最新的是默认的[: TAG])。

将指定容器中的卷挂载到从IMAGE[: TAG]生成的新容器中,例如:Docker run--rm--olus-from db-v$(pwd):/back ubuntu: 18.04 tar czvf /backup/backup.tar /dbdata

注意:如果您正在备份PostgreSQL数据库,那么恕我直言,您最好使用适当的工具来备份和恢复数据库,例如:

使用pg_dumpall进行备份:

docker run --rm \
    --name db-backup \
    --entrypoint pg_dumpall \
    --volume ${PWD}/backup:/backup \
    --volumes-from db \
    postgres:9 --host /var/run/postgresql --username postgres --clean --oids --file /backup/db.dump

使用psql进行恢复:

docker run --rm -it \
    -v ${PWD}/backup:/restore \
    --name restore \
    postgres:10.1-alpine

docker exec restore psql \
    --host /var/run/postgresql \
    --username postgres \
    --file /restore/db.dump postgres

docker rename restore NEW_NAME
 类似资料:
  • 我的组织需要对我们的定制程度很高的Jenkins实例进行备份。在研究了备份Jenkins的不同方法后,我们决定使用xcopy复制整个Jenkins目录,然后将备份移动到另一台机器上的新实例。(使用xcopy的原因是它是在每个作业中保留符号链接文件的唯一方法。) 以下是我采取的步骤: 批处理文件使用xcopy每晚从旧机器复制整个目录 我在新服务器上安装了一个新的Jenkins实例 我阻止Jenkin

  • 我一直在使用这个Docker-image Tutum/Wordpress来演示一个Wordpress网站。最近,我发现该映像使用了mysql数据的卷。 所以问题是这样的:如果我想备份和恢复容器,我可以尝试提交一个映像,然后删除容器,并从提交的映像创建一个新的容器。但如果我这样做了,卷就会被删除,我的所有数据都没有了。 一定有一些简单的方法来备份我的容器加上它的卷数据,但我在任何地方都找不到。

  • 本文向大家介绍oracle备份之备份测试脚本的方法(冷备、热备、rman),包括了oracle备份之备份测试脚本的方法(冷备、热备、rman)的使用技巧和注意事项,需要的朋友参考一下 1、数据库环境 数据库DBID及打开模式 数据文件: 控制文件: 联机日志: 2、数据库备份脚本 冷备份脚本 说明: 1、以上脚本在数据库关闭状态下备份数据库所有的数据文件,联机日志,控制文件,归档日志(在一个目录下

  • MySQL的备份-mysqldump命令的使用 备份数据库的参数 Myisam表常规备份(参数) InnoDB表常规备份(推荐使用的存储引擎) 普通方式备份数据库 多实例指定sock文件备份数据库test并使用gzip压缩 使用egrep查看备份的文件的sql内容 -B参数 备份多个库 备份库下的表 备份库下的某个表 备份库下的多个表 -d参数 备份表结构 -t参数 备份表数据 -F参数 刷新二进

  • 常规属性 在此选项卡,你可以查看服务器和数据库的信息。如有需要,可为备份文件输入一个注释。 对象选择 在此选项卡,选择你想备份的数据库对象。 运行期间的全部<对象> (*) 所有的数据库对象将会备份,所有新添加的数据库对象也将会被备份而不必修改备份配置文件。 自定义 只备份已勾选的数据库对象。然而,如果在创建备份配置文件后,在数据库和/或模式中添加任何新的数据库对象,新建的数据库对象将不会被备份,

  • 常规属性 在此选项卡,你可以查看服务器和数据库的信息。如有需要,可为备份文件输入一个注释。 对象选择 在此选项卡,选择你想备份的数据库对象。 运行期间的全部<对象> (*) 所有的数据库对象将会备份,所有新添加的数据库对象也将会被备份而不必修改备份配置文件。 自定义 只备份已勾选的数据库对象。然而,如果在创建备份配置文件后,在数据库和/或模式中添加任何新的数据库对象,新建的数据库对象将不会被备份,