Docker的volume卷 为了能持久话保存和共享容器的数据。docker
使用docker volume卷的两种方式centos
1:数据卷学习
2:数据卷容器测试
数据卷:数据卷会绕过docker 的ufs 直接写在物理设备上,对数据卷的操做能够及时生效,而且数据卷是能够进行共享重用的,为一个或者多个容器提供访问。数据卷的存在的目的在于永久话保存docker的数据,数据卷独立于容器的生命周期以外。不会因docker的变化儿产生变化spa
咱们在运行容器的时候 经过使用 -V 来添加 数据卷,也能够屡次指定挂载多个。日志
运行一个主机名为 centos1 容器名为centos1 的容器blog
docker run -it -v /data -h centos1 --name centos1 centos生命周期
注:-v /data 咱们挂载了一个名为data的数据卷 (-h centos1) 指定主机名进程
使用-v 时 docker 守护进程会自动帮助咱们建立一个data文件.这时的data文件其实挂载了宿主机的文件咱们来查看一下宿主机文件的地址:it
推出容器查看centos1 的 配置信息
docker inspect centos1 找到Mounts 节点
Source 这里就是对应的宿主机目录随机了一个名称:默认是可读写的,咱们不管是在宿主机中仍是在容器写入的任何信息,两边均可以进行查看。Volume 就是docker 的卷,表明目录或者文件。
由于这里的卷是挂载的宿主机的文件,因此不会随着容器的销毁而销毁.
docker run -it -v /var/lib/docker/volumes:/volumes -h centos2 --name centos2 centos
-v /var/lib/docker/volumes:/volumes
上面的命令挂载了宿主机 /var/lib/docker/volumes 文件路径:/volumes 容器的路径。
看到已经挂载成功了,咱们能够看多个容器咱们能够共用一个文件。这样就能够避免咱们的数据配置。。。信息丢失,好比咱们能够分红存放 程序,日志,配置等信息
-v /var/lib/docker/volumes:/volumes:ro 能够设置只读,默认是 rw读写
咱们运行一个名为Centos3的容器,而且centos2 做为一个数据卷容器
docker run -it --volumes-from centos2 -h centos3 --name centos3 centos
参数: --volumes-from centos2 指定一个卷容器。
运行成功后咱们查看一下centos3 是否共享了数据卷容器centos2的卷
上图中咱们能够看到,centos3和centos2共用了卷。
为何使用数据卷:
在生产测试环境中咱们在使用的时候能够只建立一个容器,不运行任何程序,此容器的做用就是为了共享数据卷。这个容器就被称为数据卷容器。
注意:在删除挂载有数据卷容器的时候咱们要加上 -v 选项 ,这样才会删除数据卷,否则出来不会删除外,还会浪费磁盘空间
例如:Docker rm -v centos3 当咱们删除centos3 的时候,他使用的数据卷是不会被删除的,由于当一个数据卷在被其余容器使用的时候是不会被删除的。
数据卷的备份是经过启动一个新的容器,在新的容器中执行打包压缩命令,来实现备份操做的。也就是说这个容器是能够执行后当即删除的
执行下面的命令进行备份:
docker run --rm --volumes-from centos2 -v /backup:/backup centos tar cvf /backup/volume.tar /volumes
备份完成咱们查找一下备份
查看容器是否存在:
咱们能够看到当容器执行完命令后就删除了
命令选项做用:
--rm :容器运行后删除
--volumes-from centos2 :备份数据卷容器挂载的全部数据卷
-v /backup:/backup : 备份后存放的地址
tar cvf /backup/volume.tar :执行备份而且指定备份的名称
/volumes :数据卷容器centos2 挂载的数据卷目录
有不足之处 但愿你们指出相互学习,
本文原创:转载请注明出处 谢谢!