Docker 的数据管理
1 数据卷管理
数据卷的作用是将宿主机的某个磁盘目录映射到容器的某个目录,从而实现宿主机和容器之间的数据共享。
docker run|create --name [容器名称] -v [宿主机目录]:[容器目录] [镜像名称]
参考新建容器章节或新增并启动容器章节
2 数据卷容器管理
数据卷容器的作用是实现多个容器之间的数据共享。其实,数据卷容器也是一个容器,但是与其他 Docker 容器不一样的是,数据卷容器是专门用来提供数据卷给其他容器进行挂载操作。
2.1 创建数据卷容器
创建容器,并在容器中创建目录/datas。
docker create --name my_datas -v /datas eureka:1.0
2.2 创建容器并使用数据卷容器
命令格式:
docker run --volumes-from [数据卷容器名或 ID] [options] [镜像名或 ID]
具体如下:
docker run --volumes-from my_datas -tid --name eureka1 -p 8761:8761 eureka:1.0
docker run --volumes-from my_datas -tid --name eureka2 -p 8762:8761 eureka:1.0
2.3 测试
2.3.1 访问 eureka1 容器并在共享目录中写入数据
docker exec -it eureka1 bash
> ls /
> mkdir /datas/test
> touch /datas/test/readme
> echo this text from eureka1 >> /datas/test/readme
> exit
2.3.2 访问 eureka2 容器并读取共享目录中的数据
docker exec -it eureka2 bash
> ls /datas/test
> cat /datas/test/readme
3 数据备份
将某容器中的数据目录备份。此过程需要一个备份容器作为中间过程辅助完成。
3.1 创建宿主机备份目录
mkdir /backup/
3.2 通过容器备份数据
命令格式:
docker run --rm --volumes-from [数据卷容器 ID 或名称] -v [宿主机目录]:[容器目录] [镜像名称] [备份命令]
其中--rm 是自动删除容器参数,代表此容器执行完备份命令后,自动删除。
具体如下:
docker run --rm --volumes-from my_datas -v /backup/:/backup/ mysql tar -cf /backup/data.tar.gz /data
备份成功后,查看宿主机中/backup 目录备份结果。
4 数据还原
将备份的数据文件还原到某容器,这个过程也需要一个容器辅助完成。
4.1 删除容器中的数据文件
用于模拟无数据的容器。
docker exec -it my_datas bash
> rm -rf /datas
4.2 通过容器还原备份数据
命令格式:
docker run --rm -itd --volumes-from [数据要恢复到的容器] -v [宿主机备份目录]:[容器备份目录] [镜像名称] [解压命令]
具体如下:
docker run --rm -itd --volumes-from my_datas -v /backup/:/backup/ mysql tar -xf /backup/data.tar.gz -C /
4.3 查看还原结果
docker exec -it my_datas bash
> ls /data/test
> cat /datas/test/readme