码迷,mamicode.com
首页 > 其他好文 > 详细

数据管理

时间:2020-01-27 00:09:13      阅读:70      评论:0      收藏:0      [点我收藏+]

标签:方式   space   app   需要   启动   路径   creat   data   des   

一、管理数据的两种方式

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

数据管理

标签:方式   space   app   需要   启动   路径   creat   data   des   

原文地址:https://www.cnblogs.com/tz90/p/12234963.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!