Docker内部和容器之间管理数据。
容器中管理数据主要两种方式:
数据卷(Data volumes)
数据卷容器(Data volume containers)
一、数据卷
是一个可供一个或多个容器使用的特殊目录,它绕过UFS,可以提供很多有用的特性:
a.数据卷可以在容器之间共享和重用
b.对数据卷的修改会立马生效
c.对数据卷的更新,不会影响镜像
d.卷会一直存在,直到没有容器使用
*数据卷的使用,类似于Linux下对目录或文件进行 mount。
创建数据卷
docker run -d -P -it -v /datas 容器名 启动的命名
docker run -d -P -it --name web1 -v /webapp training/webapp /bin/bash
-v 标记创建一个数据卷并且挂载到容器里
二、数据卷容器
是一个正常的容器,专门用来提供数据卷供其他容器挂载
建立数据卷容器
docker run -d -v /database --name db training/postgres echo database
在其他容器中使用--valumes-from挂载db容器中的数据卷
docker run -d --volumes-from db --name db1 -it training/postgres
可以看到数据卷容器,在多个容器中挂载之后是数据共享的。
数据卷不会被自动删除,要删除一个数据卷,必须在删除最后一个挂着该数据卷的容器是指定-v参数,如下
docker rm -v 数据卷的名字
数据卷容器备份、恢复、迁移数据卷
1.使用数据卷来备份数据,通过指定本地的一个文件路径,对应到容器中的路径,运行tar命令将重要的文件打包备份。
docker run --volumes-from db -v $(pwd):/docker --name db6 -it centos /bin/bash
tar cvf database.tar database 将文件打包
完成之后退出容器,发现本地目录有打包的文件
2.恢复数据卷容器
要将数据恢复到数据卷容器,首先要创建一个带有数据卷的容器,如db10
docker run -d -it -v db10 --name /database centos /bin/bash
然后创建另外一个容器,挂载database2容器,只有使用tar xvf 解压文件到挂载的容器卷中。
docker run -it -d --volumes-from database2 -v $(pwd):/docker centos /bin/bash