数据卷
定义
数据卷是可供容器使用的特殊目录,它将主机操作系统目录直接映射进容器
特性
数据卷可在容器间共享和重用
无论是在本地还是容器内操作数据卷内的数据,会立马生效并可见
数据卷更新不会影响镜像
数据卷一直都在,除非没有容器使用后卸载
数据卷容器无需开启即可提供数据卷服务
实操
创建数据卷
[root@heetok ~]# docker volume create -d local test1
test1
[root@heetok ~]# docker volume ls
DRIVER VOLUME NAME
local test1
[root@heetok ~]# ls /var/lib/docker/volumes/
metadata.db test1
docker volume参数详情
create Create a volume #创建一个卷
inspect Display detailed information on one or more volumes #展示一个或者多个卷的详细信息
ls List volumes #列出创建了的卷
prune Remove all unused local volumes #删除所有未使用的卷
rm Remove one or more volumes #删除一个或多个卷
绑定数据卷
Docker除了使用volume命令管理数据卷以外,还可以在创建容器的时候将主机本地目录挂载到容器内作为数据卷,这种挂载卷的方法叫做绑定数据卷
在使用docker run的时候,通过–mount选项使用数据卷,其支持三种类型的数据卷:
1、volume:普通数据卷,/var/lib/docker/volumes下的数据卷
2、bind:绑定数据卷,直接映射到主机指定目录下
3、tmpfs:临时数据卷,只存在内存中
数据卷容器
数据卷容器顾名思义就是提供数据卷的容器,当用户需要在多个容器之间共享数据时,可以通过数据卷容器提供数据卷给其他容器挂载
实操
创建数据卷容器test并在其中创建一个数据卷挂载到/test:
docker run -it -v /test --name volumec busybox
然后创建其他容器,使用 --volumes-from 挂载volumec容器中的数据卷,例如创建web1和web2容器并且从volumec容器中挂载数据卷:
docker run -it --volumes-from volumec --name web1 busybox
docker run -it --volumes-from volumec --name web2 busybox
删除任意挂载卷的容器,数据卷不会删除,只有在删除最后一个挂载数据卷的容器时使用docker rm -v命令才能删除
数据卷容器迁移数据
备份
思路:通过-v 将本地目录挂载到容器内>>容器内打包数据并放置到本地目录挂载的相应目录>>获取本地目录下的备份文件
docker run --volumes-from volumec -v /root:/backup --name backup busybox tar cvf /backup/backup.tar /test
长命令详解:
–volumes-from挂载数据卷
-v 挂载本地目录至容器目录
tar cvf /backup/backup.tar /test 将test目录打包成backup.tar放在/backup目录下,而该目录则是挂载的本地/root目录,则在/root目录下可以看到backup.tar
恢复
恢复备份的思路:将存放backup.tar的目录挂载到容器中,并将其解压
docker run --volumes-from volumec -v /root:/backup --name backup busubox tar -xvf /backup/backup.tar
如有不妥,敬请指正~