docker镜像的备份迁移和恢复

2024-08-15 11:36:36 2104

docker镜像的备份迁移和恢复


蓝队云小课堂:

镜像备份和恢复

docker save -o centos_vim_image.tar centos_vim_image

-删除容器,删除镜像

-把备份的镜像恢复

docker load -i centos_vim_image.tar


有时在docker中产生的数据,我们需要进行相应的备份和迁移到另外一台服务器上,并在另一台服务器上进行数据的恢复,那么改如何操作呢?如下将介绍三种方式进行数据的备份、恢复与迁移。

方式一:docker容器的备份、恢复与迁移

1、docker容器的备份 (导出)

docker export -o 容器导出文件(格式为tar压缩文件) 容器ID或容器名称

docker export 容器ID或容器名称 > 容器导出文件(格式为tar压缩文件) 

示例:

docker export -o $(pwd)/newtomcat.tar mytomcat

docker export mytomcat > $(pwd)/newtomcat.tar 

注释:

$(pwd)是docker支持的获取当前目录路径的方法,与linux的pwd类似

$(pwd)/newtomcat.tar 表示在当前目录下生成一个newtomcat.tar压缩文件

备注:容器可以不启动进行备份操作

image.png

2、docker容器的迁移与恢复 (导入)

docker import 容器导出文件(格式为tar压缩文件) 新镜像名称[:版本号]

docker import /URL 新镜像名称[:版本号]

示例:

docker import $(pwd)/newtomcat.tar newtomcat:v1.0

docker import http://www.landui.com/exampleimage.tgz example/imagerepo

image.png


方式二:docker镜像的备份、恢复与迁移

1、docker镜像的备份 (导出)

docker save -o 镜像导出文件(格式为tar压缩文件) 镜像ID或镜像名称[:版本号]

docker save 镜像ID或镜像名称[:版本号] > 镜像导出文件(格式为tar压缩文件)

示例:

docker save -o $(pwd)/mytomcat.tar newtomcat:v1.0

docker save newtomcat:v1.0 > $(pwd)/mytomcat.tar 

image.png

2、docker镜像的迁移与恢复 (导入)

docker load -i 镜像导出文件(格式为tar压缩文件)

docker load < 镜像导出文件(格式为tar压缩文件)

示例:

docker load -i $(pwd)/mytomcat.tar

docker load < $(pwd)/mytomcat.tar

image.png

注意:

用户既可以使用docker load来导入镜像存储文件到本地镜像库,也可以使用docker import来导入一个容器快照到本地镜像库。这两者的区别在于容器快照文件将丢弃所有的历史记录和元数据信息(即仅保存容器当时的快照状态),而镜像存储文件将保存完整记录,体积也要大。此外,容器快照文件方式导入可以重新指定镜像标签等元数据信息。


方式三:docker数据卷的备份、恢复与迁移

1、docker数据卷的备份 (导出)

//单个数据卷的备份

docker run --volumes-from 数据卷容器ID/数据卷容器名称 -v 宿主机备份目录:容器备份目录 镜像ID/镜像名称[:版本号] tar cvf 容器目录/数据卷压缩文件(格式为tar压缩文件) 容器数据卷文件/目录


//多个数据卷的备份

docker run --volumes-from 数据卷容器ID/数据卷容器名称 -v 宿主机备份目录:容器备份目录 镜像ID/镜像名称[:版本号] tar cvf 容器目录/数据卷压缩文件(格式为tar压缩文件) 容器数据卷文件1/目录1 容器数据卷文件2/目录2


示例:

//单个数据卷的备份

docker run --volumes-from mycentos -v $(pwd):/backup centos tar cvf /backup/newcentos.tar /containerVolume


//多个数据卷的备份

docker run --volumes-from mycentos -v $(pwd):/backup centos tar cvf /backup/newcentos.tar /containerVolume1 /containerVolume2


//如果想要在执行完备份指令后,删除临时容器,请在run 后面加上--rm属性,表示在执行完后立即删除该容器

docker run --rm --volumes-from mycentos -v $(pwd):/backup centos tar cvf /backup/newcentos.tar /containerVolume

注意:

a.数据卷容器可以不启动(即容器退出停止)进行备份操作

b.这里的数据卷压缩文件的路径要选择导出到容器备份目录下,即 如果容器备份目录为/backup,则数据卷压缩文件的路径为/backup/newcentos.tar,因为宿主机备份目录与容器备份目录做了数据卷挂载,只有将数据卷压缩文件的导出路径选择在容器备份目录下,才能同步到宿主机备份目录下。

image.png

2、docker数据卷的迁移与恢复 (导入)

//单个数据卷与多个数据卷的数据卷恢复指令相同

docker run --volumes-from 需要恢复数据的数据卷容器ID/名称 -v 宿主机备份目录:容器备份目录 镜像ID/镜像名称[:版本号] tar xvf 容器备份目录/数据卷压缩文件(格式为tar压缩文件)

示例:

docker run --volumes-from mycentos -v $(pwd):/backup centos tar xvf /backup/newcentos.tar


//如果想要在执行完数据恢复指令后,删除临时容器,请在run后面加上--rm属性,表示在执行完后立即删除该容器

docker run --rm --volumes-from mycentos -v $(pwd):/backup centos tar xvf /backup/newcentos.tar

注意:

a.需要恢复数据的数据卷容器可以不启动(即容器退出停止)进行数据恢复操作

b.如果要把数据卷恢复到新的容器中,那么新的容器中的数据卷要与之前备份的容器数据卷的路径和名称要一致,(即:之前要备份的容器数据卷为/data 或者 /var/containerVolume,那么新容器的数据卷的路径和名称也要为/data 或者 /var/containerVolume),例子:之前需要备份的容器与宿主机的挂载情况为-v ~/hostVolume:/containerVolume,那么需要备份的新容器与宿主机的挂载情况为:-v ~/host:/containerVolume,即新容器数据卷的路径和名称 要与 备份的容器数据卷路径和名称必须一致,为/containerVolume,宿主机的数据卷路径和名称可以不一致

c.这里的数据卷压缩文件要选择容器备份目录下的,(即 如果容器备份目录为/backup,则数据卷导出文件的路径为/backup/newcentos.tar)


1、删除数据卷容器mycentos中的数据卷里的data.txt文件,模拟数据的丢失

image.png

2、对丢失数据的数据卷容器mycentos进行数据的恢复

image.png


更多小知识,可联系蓝队云一起探讨。


提交成功!非常感谢您的反馈,我们会继续努力做到更好!

这条文档是否有帮助解决问题?

非常抱歉未能帮助到您。为了给您提供更好的服务,我们很需要您进一步的反馈信息:

在文档使用中是否遇到以下问题: