docker的数据卷管理方法

数据卷的概述

数据卷是一个可以供一个或多个容器使用的特殊目录。
可以达到以下目的:
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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值