数据管理
Posted tz90
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据管理相关的知识,希望对你有一定的参考价值。
一、管理数据的两种方式
1.1 数据卷
容器内的数据直接映射到本地主机中。
1.2 数据卷容器
使用特定容器维护数据卷,让其在容器和主机、容器和容器之间共享数据。
二、数据卷
2.1 特性
- 可以在容器之间共享
- 对数据卷内的数据会立刻生效
- 对数据卷的更新不会影响镜像
- 数据卷会一直存在,直到卸载它
2.2 创建数据卷
使用volume子命令创建数据卷,存放在/var/lib/docker /volumes路径下
$docker volume create –d local test $ls –l /var/lib/docker /volumes #除此之外还有如下子命令 $docker volume inspect 查看详细信息 $docker volume ls 列出已有数据卷 $docker volume prune 清理无用数据卷 $docker volume rm 删除数据卷
2.3 绑定数据卷
将本地主机的任意路径挂载到容器中做数据卷称为绑定数据卷。
使用-mount选项在创建容器
$docker run –d –P –name web –mount type=bind,source=/webapp,destination=/opt/webapp training/webapp python app.py #上一条命令相当于如下使用-v命令指定目录 $docker run –d –P –name web –v /webapp:/opt/webapp training/webapp python app.py
需要注意的是,本地路径必须是绝对路径,容器内可以为相对路径,如果容器内路径不存在,会自动创建。
Docker挂载数据卷的默认权限是rw,可以更改为ro,让其无法更改数据卷内的文件
$docker run –d –P –name web –v /webapp:/opt/webapp:ro training/webapp python app.py
需要注意,如果直接挂载文件到容器内,使用编辑工具编辑文件会造成文件inode改变从而报错,所以推荐挂载文件所在的目录到容器内。
三、数据卷容器
数据卷容器是一个专门提供数据卷给其他容器挂载的容器。
创建一个容器作为数据卷容器,并创建一个dbdata目录用于挂载数据
$docker run –it –v /dbdata –name dbdata ubuntu ls
创建db1跟db2容器并使用—volumes-from命令挂载数据卷容器的dbdata目录
$docker run –it –volumes-from dbdata –name db1 ubuntu $docker run –it –volumes-from dbdata –name db2 ubuntu
此时读写dbdata目录中的文件对三个容器是实时更新的
除此之外还可以从其他已经挂载了容器卷的容器里挂载数据卷
$docker run –d –name db3 –volumes-from db1 training/postgres
使用—volumes-from参数所挂载数据卷的容器自身不需要保持在运行状态
四、删除容器卷
在挂载它的容器中使用docker rm -v命令(先写在这里明天实践)
五、利用数据卷容器来迁移数据
5.1 备份
$docker run –volumes-from dbdata –v $(pwd):/backup –name worker ubuntu tar cvf /backup/backup.tar /dbdata
上述命令解释如下,先利用ubuntu镜像创建一个容器worker,使用—volumes-from dbdata参数让worker容器挂载dbdata容器的dbdata数据卷,使用-v $(pwd):/backup参数来挂载本地的当前目录到worker容器的/backup目录。worker容器启动后,使用tar cvf /backup/backup.tar /dbdata命令将/dbdata下内容备份到容器中的/backup/backup.tar,即宿主机当前目录下的backup.tar(这么一大串实践明天看懂了就删了)
5.2 恢复
创建一个带有数据卷的容器dbdata2
$docker run –v /dbdata –name dbdata2 ubuntu /bin/bash
创建一个新的容器,挂载dbdata2,使用untar解压备份文件到所挂载的容器卷中
$docker run –volumes-from dbdata2 –v $(pwd):/backup busybox tar xvf /backup/backup.tar
以上是关于数据管理的主要内容,如果未能解决你的问题,请参考以下文章
python 用于数据探索的Python代码片段(例如,在数据科学项目中)