您的位置:首页 > 运维架构 > Docker

docker的数据卷管理方法

2017-08-12 22:47 393 查看

数据卷的概述

数据卷是一个可以供一个或多个容器使用的特殊目录。

可以达到以下目的:

1. 绕过“拷贝写”系统,以达到本地磁盘IO的性能,(比如运行一个容器,在容器中对数据卷修改内容,会直接改变宿主机上的数据卷中的内容,所以是本地磁盘IO的性能,而不是先在容器中写一份,最后还要将容器中的修改的内容拷贝出来进行同步。)

2. 绕过“拷贝写”系统,有些文件不需要在docker commit打包进镜像文件。

3. 在多个容器间共享目录

4. 在宿主和容器间共享目录

5. 在宿主和容器间共享一个文件。

数据卷管理

docker run 在创建容器时使用 -v 参数可以挂载一个或多个数据卷到当前运行的容器中,-v 的作用是将宿主机上的目录作为容器的数据卷挂载到容器中,使宿主机和容器之间可以共 享一个目录。

挂载数据卷到新创建的容器上:

docker run -it --name paremeter -v /tmp/data1:/data1 -v /tmp/data2:/data2 rhel7 /bin/bash #进入rhel7镜像搭载的parameter容器中的bash -v后面的是挂载的情况(可重复使用)


-v 参数可以重复使用,挂载多个数据卷到容器中,冒号前面的是宿主机的目录(本地目录 不存在 docker 会自动创建),冒号后面的是容器中的挂载目录。

注:docker commit 时卷的数据不会被保存。 默认挂载可以读写数据卷,也可以只读挂载:

docker run -it --name parameter2 -v /tmp/data2:/data2:ro rhel /bin/bash #在后面 +:ro 为只读挂载


挂载宿主机文件:

docker run -it --name patameter3 -v /etc/yum.repos.d/rhel-dvd.repo:/etc/yum.repos.d/rhel-dvd.repo:ro rhel7 /bin/bash
#这样就实现了yum仓库的共享搭建


数据卷容器:

docker create --name data -v /tmp/sharedata:/sharedata rhel7 /bin/true #将这个数据卷导入到data中,然后如果需要生成新的容器可以重复使用,如下
docker run -it --name vm1 --volumes-from data rhel7 /bin/bash
docker run -it --name vm2 --volumes-from data rhel7 /bin/bash


测试效果如下

docker attach vm1
bash-4.2# cd /sharedata/
bash-4.2# touch vm1file
docker attach vm2
bash-4.2# cd /sharedata/
bash-4.2# ls
passwd vm1file
bash-4.2# touch vm2file


在物理机上查看

ls /tmp/sharedata/ passwd
vm1file vm2file


备份数据卷:

docker run --rm --volumes-from data -v /tmp/backup:/backup rhel7 tar cf /sharedata
/backup/test.tar
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: