Docker 入门到实践系列文章列表:
Docker 入门到实践 (一) docker 简介与安装
Docker 入门到实践 (二) docker 常用命令讲解
Docker 入门到实践 (三) Dockerfile 解析与镜像制作
Docker 入门到实践 (四) docker 容器数据卷与数据卷容器
Docker 入门到实践 (五) docker 数据的备份、恢复与迁移
Docker 入门到实践 (六) docker 网络模式详解以及容器间的网络通信
Docker 入门到实践 (七) docker 常用软件的安装
Docker 入门到实践 (八) 本地镜像推送到阿里云 和 下载镜像到本地
Docker 入门到实践 (九) docker 可视化界面 portainer 的安装与使用
Docker 入门到实践 (十) IDEA 集成 Docker 构建容器镜像,部署项目
Docker 入门到实践 (十一) docker 私有仓库的搭建与配置
Docker 入门到实践 (十二) docker compose 简介与安装
Docker 入门到实践 (十三) docker compose 配置文件与常用命令讲解
Docker 入门到实践 (十四) docker 企业级容器镜像仓库 HarBor 的搭建与配置
一、前言
在上一篇文章中已经介绍了 docker 容器数据卷与数据卷容器, 下面正式进入到 docker 数据的备份、恢复与迁移的讲解。
二、docker 数据的备份、恢复与迁移
有时在 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压缩文件
备注:
容器可以不启动进行备份操作
2、docker 容器的迁移与恢复 (导入)
docker import 容器导出文件(格式为tar压缩文件) 新镜像名称[:版本号]
或
docker import /URL 新镜像名称[:版本号]
示例:
docker import $(pwd)/newtomcat.tar newtomcat:v1.0
或
docker import http://example.com/exampleimage.tgz example/imagerepo
方式二: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
2、docker 镜像的迁移与恢复 (导入)
docker load -i 镜像导出文件(格式为tar压缩文件)
或
docker load < 镜像导出文件(格式为tar压缩文件)
示例:
docker load -i $(pwd)/mytomcat.tar
或
docker load < $(pwd)/mytomcat.tar
注意:用户既可以使用 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
注意:
- 数据卷容器可以
不启动(即容器退出停止)进行备份操作 - 这里的
数据卷压缩文件的路径要选择导出到容器备份目录下,即 如果容器备份目录为 / backup,则数据卷压缩文件的路径为/backup/newcentos.tar,因为宿主机备份目录与容器备份目录做了数据卷挂载,只有将数据卷压缩文件的导出路径选择在容器备份目录下,才能同步到宿主机备份目录下。
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
注意:
-
需要恢复数据的数据卷容器可以
不启动(即容器退出停止)进行数据恢复操作 -
如果要把数据卷恢复到
新的容器中,那么新的容器中的数据卷要与之前备份的容器数据卷的路径和名称要一致,(即:之前要备份的容器数据卷为/data或者/var/containerVolume,那么新容器的数据卷的路径和名称也要为/data或者/var/containerVolume),例子:之前需要备份的容器与宿主机的挂载情况为-v ~/hostVolume:/containerVolume,那么需要备份的新容器与宿主机的挂载情况为:-v ~/host:/containerVolume,即新容器数据卷的路径和名称 要与 备份的容器数据卷路径和名称必须一致,为/containerVolume,宿主机的数据卷路径和名称可以不一致 -
这里的
数据卷压缩文件要选择容器备份目录下的,(即 如果容器备份目录为/backup,则数据卷导出文件的路径为/backup/newcentos.tar)
1、删除数据卷容器 mycentos 中的数据卷里的 data.txt 文件,模拟数据的丢失
2、对丢失数据的数据卷容器 mycentos 进行数据的恢复
本文由 简悦 SimpRead 转码, 原文地址 blog.csdn.net