前言:
docker数据管理也就是数据卷和数据卷容器,实现的是容器和容器的之间的数据,容器和主机的数据间的共享,如何将本地的目录挂载到容器,如何将容器的数据备份和恢复,这就是数据管理
00x1:
数据卷:可以在容器间共享,数据卷的修改是及时性的,数据卷是一直存在的,类似于linux下的mount
命令:docker run -v 多个v可以创建多个数据卷。
举列子:下载一个web镜像:
docker -d -p -name webapp -v /webapp training/webapp
将本地的文件挂载到容器:
docker -d -P -name webapp -v /src/webapp:/opt/webapp training/webapp
这是是将主机的/src/webapp 目录挂载到容器的/opt/webapp目录上
挂载在/opt/webapp 目录默认是rd 可读可写的,如果是要控制为只读: ro
docker -d -P -name webapp -v /src/webapp:/opt/webapp:ro training/webapp
也可以直接挂载文件到容器的目录下:这样把脚本或者代码也可以共享给容器比如:
docker run -rm -it -v ~/.bash_history:/.bash_history ubuntu /bin/bash
在容器中可以有历史记录。 docker -rm 是退出容器后自动清理文件系统
数据卷容器:
这个目的是共享持续跟新的数据,就算提供一个容器专门为其他容器挂载数据卷
创建一个容器dbdata,并且挂载到/dbdata
以一个普通的ubuntu容器命名为dbdata:
docker run -it -v /dbdata --name dabdata ubuntu
--volumes-from 是从容器中挂载:
比如:docker run -it ---volumes-from dbdata --name db1 ubuntu
docker run -it ---volumes-from dbdata --name db2 ubuntu
所以这两个db1和db2 就可以实时传输数据通过第三方dbdata的挂载文件dbdata
所以实验下,在dbdata下面创建test文件,观察其他容器:
在db2 下面查看:
00x2:数据的备份
数据的备份一条命令:
docker run --volumes-from dbdata -v $(pwd):/backup --name worker ubuntu tar cvf /back/back.tar /dbdata
看看效果再去理解这条命令:
先是创建一个以ubuntu镜像名字叫worker的容器,然后挂载 dbdata (-volumes-from dbdata) 然后命令: -v $(pwd):/backup 挂载当前目录,到backup目录,后面的tar命令就算把dbdata的数据打包到worker 容器
的backup/backup.tar内,然后woker容器又是挂载了本地当前目录的,所以直接就在当前目录了,backup.tar
而恢复就是解压的过程