什么是数据卷

overlay2存储卷

  • docker镜像是由多个只读层叠加而成,启动容器时,docker会加载只读镜像层,并在镜像栈顶部添加一个可写层
  • 如果运行中的容器修改了现有的一个已存在文件,那该文件会从读写层下面的只读层复制到读写层,该文件的只读版本仍然存在,只是已经被读写层中的文件的副本所隐藏,即“写时复制(COW)”机制,但是这种机制有两个缺点:
  1. 因为这种存储机制是层级关系,因此读写效率很低
  2. 如果docker容器删除,那么数据卷也一并删除,数据得不到安全存储
  3. 容器间数据共享不方便

宿主机存储

之前介绍过overlay2存储卷了,相信大家已经对overlay2存储卷的缺点已经了解,因此,为了保证数据的安全性,我们可以把docker所用到的数据卷和宿主机的数据卷进行绑定,docker容器在写入数据的时候会保存到宿主机的磁盘空间当中,如下图:

这种方式的好处是当容器被删除的时候不影响数据存储卷里的数据,那么下次我们在创建docker容器,只要把卷关联到宿主机上的存储卷,那么就可以保证数据的正常读取,但是这仅仅只能到本机之上创建新的docker容器

NFS共享存储

之前提到有两种数据卷存储机制,一个是overlay2,一个是关联至宿主机,我们还有另外一种数据卷形式,就是NFS网络文件系统,如下图:

这种模式的好处在于,docker容器的创建就不仅仅局限于单机编排了,因为我们的数据卷是nfs共享文件系统,因此我们不用管数据持久性的问题,我们可以在任何挂载nfs文件系统的宿主机上启动docker就可以读取到数据了

因此一般应用程序在访问卷时可以是以下形式:

存储卷类型

docker容器挂载卷一般分为2种:

  1. 绑定挂载卷
  2. 容器管理的挂载卷

绑定挂载卷

绑定挂载卷,把宿主机的/test目录和容器主机的/data/web/html目录绑定

[root@localhost ~]# docker run --name mybusy -itd -v /test/:/data/web/html/ busybox
9ad314b58a9d81e9d8e7c782b4716a142da88c844aa4d4bce616a9360c86491d

验证

[root@localhost ~]# cd /test
[root@localhost test]# ls
[root@localhost test]# echo "welcome to docker" > index.html
[root@localhost test]# docker exec -it mybusy /bin/sh
/ # cd /data/web/html/
/data/web/html # cat index.html
welcome to docker

我们也可以用inspect查看详细信息

[root@localhost test]# docker inspect mybusy
......
"Mounts": [
{
"Type": "bind",
"Source": "/test",
"Destination": "/data/web/html",
"Mode": "",
"RW": true,
"Propagation": "rprivate"
}
],
......

docker容器管理的卷

可以看到下面红色字体,docker容器的卷映射到的宿主机上的卷

[root@localhost test]# docker run --name mybusy -itd -p : -v /data/web/html/ busybox
"Mounts": [
{
"Type": "volume",
"Name": "7ae8424e3a6759288a9376f55a36c586f505509ca60640fde55315484bcda364",
"Source": "/var/lib/docker/volumes/7ae8424e3a6759288a9376f55a36c586f505509ca60640fde55315484bcda364/_data",
"Destination": "/data/web/html",
"Driver": "local",
"Mode": "",
"RW": true,
"Propagation": ""
}
],

最新文章

  1. 对点餐APP现阶段开发的问题
  2. 0823--静默安装、fiddler设置断点、f12清除数据记录
  3. easyui datagrid 点击列表头排序出现错乱的原因
  4. ExtJs 获取Dom对象
  5. 与你相遇好幸运,Tippecanoe用法
  6. java poi read write xlsx
  7. [have_fun] 好玩哒小游戏又来啦
  8. ZPPR016-在制品清单报表
  9. 5540 asa 8.4 防火墙
  10. 原生js显示分页效果
  11. SQL存储过程传入字段名查询.
  12. IIS使用 URL Rewrite Module 2.0组件 设置伪静态的方法
  13. 【数学建模】day02-整数规划
  14. js中typeof与instanceof用法
  15. java的struts2项目实现网站首页只显示域名不显示index.do的做法
  16. docker link 过时不再用了?那容器互联、服务发现怎么办?
  17. windows下如何下载并安装Python
  18. Spring Boot遇到的某些问题
  19. Qt ------ 断开某对信号与槽的connect
  20. PHP.48-TP框架商城应用实例-后台23-权限管理-权限验证

热门文章

  1. Pandas:DataFrame数据选择方法(索引)
  2. 【JDBC】JDBC入门
  3. JS&Jquery基础之窗口对象的关系总结
  4. Linux 打开端口方法
  5. CPU相关概念
  6. JavaScript基础2
  7. NOIP 2016 玩具谜题
  8. 使用vmware workstation安装centos 7操作系统
  9. MS SQL OPENJSON JSON
  10. 【TCP/IP网络编程】:01理解网络编程和套接字