docker managed volume 与bind mount 在使用上最大的区别是不需要指定mount 源,指明mount point就可以了
 
[root@5bvkl harbor]# docker run --name web01 -d -v /usr/local/apache2/htdocs httpd
6651fcb21173bbcb57c248d513adb6bbd7813b89c74e1dc1ff52f7373340e13b
[root@5bvkl harbor]# docker inspect web01
......
        "Mounts": [
            {
                "Type": "volume",
                "Name": "209e95239ee86ead11a89a6b0b685cf4dbc05cfb746726f8707a69fc8fe19fd3",
                "Source": "/var/lib/docker/volumes/209e95239ee86ead11a89a6b0b685cf4dbc05cfb746726f8707a69fc8fe19fd3/_data",
                "Destination": "/usr/local/apache2/htdocs",
                "Driver": "local",
                "Mode": "",
                "RW": true,
                "Propagation": ""
            }
        ],
......
[root@5bvkl harbor]# ll /var/lib/docker/volumes/209e95239ee86ead11a89a6b0b685cf4dbc05cfb746726f8707a69fc8fe19fd3/_data
total 4
-rw-r--r-- 1 root 40 45 Jun 12  2007 index.html
[root@5bvkl harbor]# cat /var/lib/docker/volumes/209e95239ee86ead11a89a6b0b685cf4dbc05cfb746726f8707a69fc8fe19fd3/_data/index.html
<html><body><h1>It works!</h1></body></html>
 
[root@5bvkl harbor]# docker volume inspect 209e95239ee86ead11a89a6b0b685cf4dbc05cfb746726f8707a69fc8fe19fd3
[
    {
        "CreatedAt": "2019-03-01T09:07:03+08:00",
        "Driver": "local",
        "Labels": null,
        "Mountpoint": "/var/lib/docker/volumes/209e95239ee86ead11a89a6b0b685cf4dbc05cfb746726f8707a69fc8fe19fd3/_data",
        "Name": "209e95239ee86ead11a89a6b0b685cf4dbc05cfb746726f8707a69fc8fe19fd3",
        "Options": null,
        "Scope": "local"
    }
]
 
每当容器申请mount dockermanaged volume时,docker都会在/var/lib/docker/volume下生成一个目录,该目录中的内容和容器中mount point目录中的内容完全一致。
 
因为当mount point是已经存在的目录,那么mount point目录中的内容会被复制到dockerhost上,此时mount point已经不再是storage driver管理的层数据了,他已经是一个data volume,我们可以像bind mount一样对数据进行操作
 
docker volume 也可以查看mount信息,但是只能看到docker managed volume 的信息,bind mount的信息看不到
 
对比bind mount 和 docker managed volume
 
相同点:两者都是host文件系统中的某个路径
 
不同点:
    1、volume位置docker manged volume不能指定
    2、对已经mount point 影响不同,前者用host上的文件或者目录进行覆盖,后者将容器中的目录复制到host上
    3、前者支持单个文件,后者只支持目录
    4、前者可以设置只读,后者不支持
    5、移植性:前者移植性弱,与host path绑定,后者移植性强无需指定host目录
 

最新文章

  1. OpenCV成长之路(2):图像的遍历
  2. php 实现创建文件并追加数据
  3. iOS 原生网络请求(推荐使用AFNetWorking库)
  4. css2图片边框
  5. 开启MySQL慢查询日志
  6. 【MySql存储过程】DATE_ADD用法
  7. Golang在视频直播平台的高性能实践
  8. swing的第一课
  9. iOS_24_画画板(含取色板)
  10. DataNode连接错误Retrying connect to server
  11. CentOS系统更换软件安装源aliyun的
  12. 分块编码(Transfer-Encoding: chunked)
  13. poj 1330 LCA最近公共祖先
  14. js获取当前页面的URL并且截取?之后的数据,返回json
  15. VFS四大对象之一 struct super_block
  16. 题解 P4008 【[NOI2003]文本编辑器】
  17. dos.orm
  18. nigix反向代理
  19. Bagging-Adaboost-RF的粗糙理解
  20. 关于”nodejs基于事件驱动”的思考

热门文章

  1. SSM 即所谓的 Spring MVC + Spring + MyBatis 整合开发。
  2. linux中$#,$0,$1,$2,$@,$*,$$,$?的含义
  3. rt-thread 低优先级线程挂起高优先级线程失败
  4. 【原创】POJ 3259 Wormholes(Bellman-Ford) &amp;&amp; 简介Bellman-Ford算法
  5. Ability
  6. 使用jvisualVm监控本地和远程的jvm
  7. 三小时学会Kubernetes:容器编排详细指南
  8. js jquery 遍历 for,while,each,map,grep
  9. CF528D Fuzzy Search
  10. memset()函数及其作用(转)