volume container 是专门为其他容器提供 volume 的容器,他提供的卷也可以是bind mount ,也可以是docker managed volume
 
创建容器vc_data,因为它只负责提供数据,无需运行,docker create即可。
容器mount了两个volume,bind mount用来存放webserver的静态文件,docker managed volume用来存放一些实用工具
 
[root@docker-lab ~]# cat ~/htdocs/index.html
This a test HTML file
[root@docker-lab ~]# docker create --name vc_data -v ~/htdocs:/usr/local/apache2/htdocs -v /other/useful/tools busybox
6c12ead74cd754c2da6e0e801b798a93d38965d84fc2eea9c120bcf627e99560
[root@docker-lab ~]# docker inspect vc_data
 
        "Mounts": [
            {
                "Type": "bind",
                "Source": "/root/htdocs",
                "Destination": "/usr/local/apache2/htdocs",
                "Mode": "",
                "RW": true,
                "Propagation": "rprivate"
            },
            {
                "Type": "volume",
                "Name": "14ae5efb5762a333bcceb26503ca974122d67cf31ed68da1b22773065b6fa696",
                "Source": "/var/lib/docker/volumes/14ae5efb5762a333bcceb26503ca974122d67cf31ed68da1b22773065b6fa696/_data",
                "Destination": "/other/useful/tools",
                "Driver": "local",
                "Mode": "",
                "RW": true,
                "Propagation": ""
            }
        ]
 
其他容器可以使用 --volumes-from 使用vc_data 这个volume container
 
[root@docker-lab ~]# docker run --name web01 -d -p 80 --volumes-from vc_data httpd
90feafa492fe582ba97072e660a5661587b14bd40de60d6b78d14a3127294328
[root@docker-lab ~]# docker run --name web02 -d -p 80 --volumes-from vc_data httpd
a04615d5f438bc609ce35e04c2a3d76bb6df78e627d4136cf56e83b18d794517
[root@docker-lab ~]# docker run --name web03 -d -p 80 --volumes-from vc_data httpd
88613c4f0e6cd112a359bf68dfe515e7469883ea76f2df85f37c022f84e5fd63
 
[root@docker-lab ~]# docker ps
CONTAINER ID        IMAGE               COMMAND              CREATED             STATUS              PORTS                   NAMES
88613c4f0e6c        httpd               "httpd-foreground"   3 seconds ago       Up 2 seconds        0.0.0.0:32770->80/tcp   web03
a04615d5f438        httpd               "httpd-foreground"   8 seconds ago       Up 7 seconds        0.0.0.0:32769->80/tcp   web02
90feafa492fe        httpd               "httpd-foreground"   13 seconds ago      Up 12 seconds       0.0.0.0:32768->80/tcp   web01
 
[root@docker-lab ~]# docker inspect web01 -f '{{.NetworkSettings.IPAddress}}'
172.17.0.2
[root@docker-lab ~]# docker inspect web02 -f '{{.NetworkSettings.IPAddress}}'
172.17.0.3
[root@docker-lab ~]# docker inspect web03 -f '{{.NetworkSettings.IPAddress}}'
172.17.0.4
 
[root@docker-lab ~]# curl http://127.0.0.1:32768
This a test HTML file
[root@docker-lab ~]# curl http://127.0.0.1:32769
This a test HTML file
[root@docker-lab ~]# curl http://127.0.0.1:32770
This a test HTML file
 
[root@docker-lab ~]# docker inspect vc_data -f '{{.Mounts}}'
[
    {bind  /root/htdocs /usr/local/apache2/htdocs   true rprivate} 
    {volume 14ae5efb5762a333bcceb26503ca974122d67cf31ed68da1b22773065b6fa696 /var/lib/docker/volumes/14ae5efb5762a333bcceb26503ca974122d67cf31ed68da1b22773065b6fa696/_data /other/useful/tools local  true }
]
[root@docker-lab ~]# docker inspect web01 -f '{{.Mounts}}'
[
    {bind  /root/htdocs /usr/local/apache2/htdocs   true rprivate} 
    {volume 14ae5efb5762a333bcceb26503ca974122d67cf31ed68da1b22773065b6fa696 /var/lib/docker/volumes/14ae5efb5762a333bcceb26503ca974122d67cf31ed68da1b22773065b6fa696/_data /other/useful/tools local  true }
]
[root@docker-lab ~]# docker inspect web02 -f '{{.Mounts}}'
[
    {bind  /root/htdocs /usr/local/apache2/htdocs   true rprivate} 
    {volume 14ae5efb5762a333bcceb26503ca974122d67cf31ed68da1b22773065b6fa696 /var/lib/docker/volumes/14ae5efb5762a333bcceb26503ca974122d67cf31ed68da1b22773065b6fa696/_data /other/useful/tools local  true }
]
[root@docker-lab ~]# docker inspect web03 -f '{{.Mounts}}'
[
    {bind  /root/htdocs /usr/local/apache2/htdocs   true rprivate} 
    {volume 14ae5efb5762a333bcceb26503ca974122d67cf31ed68da1b22773065b6fa696 /var/lib/docker/volumes/14ae5efb5762a333bcceb26503ca974122d67cf31ed68da1b22773065b6fa696/_data /other/useful/tools local  true }
]
 
上面可以看到三个web容器都成功的共享了 volume container 中的volume。
 
volume container 特点:
 
1、与bind mount 相比,不必为每一个容器指定host path,所有path都在volume container的容器中定义,容器只需要与volume container关联,实现了容器与host的解耦
 
2、使用volume container 的容器其mount point是一致的,有利于配置和的规范和标准化,也带来一定的局限性,使用时需要综合考虑
 
 

042、用volume container 共享数据 (2019-03-05 周二)的更多相关文章

  1. 第 6 章 存储 - 042 - 用 volume container 共享数据

    volume container volume container 是专门为其他容器提供 volume 的容器.它提供的卷可以是 bind mount,也可以是 docker managed volu ...

  2. 用 volume container 共享数据 - 每天5分钟玩转 Docker 容器技术(42)

    volume container 是专门为其他容器提供 volume 的容器.它提供的卷可以是 bind mount,也可以是 docker managed volume.下面我们创建一个 volum ...

  3. 40-用 volume container 共享数据

    volume container 是专门为其他容器提供 volume 的容器.它提供的卷可以是 bind mount,也可以是 docker managed volume.下面我们创建一个 volum ...

  4. data-packed volume container - 每天5分钟玩转 Docker 容器技术(43)

    在上一节的例子中 volume container 的数据归根到底还是在 host 里,有没有办法将数据完全放到 volume container 中,同时又能与其他容器共享呢? 当然可以,通常我们称 ...

  5. 043、data-packed volume container (2019-03-06 周三)

    参考https://www.cnblogs.com/CloudMan6/p/7203285.html     volume container 的数据归根到底还是在host上,我们能不能把数据完全放到 ...

  6. 第 6 章 存储 - 043 - data-packed volume container

    data-packed volume container 将数据打包到镜像中,然后通过 docker managed volume 共享 1.先用Dockerfile 构建镜像 ADD 将静态文件添加 ...

  7. 41-data-packed volume container

    在上一节的例子中 volume container 的数据归根到底还是在 host 里,有没有办法将数据完全放到 volume container 中,同时又能与其他容器共享呢? 当然可以,通常我们称 ...

  8. 如何共享数据?- 每天5分钟玩转 Docker 容器技术(41)

    数据共享是 volume 的关键特性,本节我们详细讨论通过 volume 如何在容器与 host 之间,容器与容器之间共享数据. 容器与 host 共享数据 我们有两种类型的 data volume, ...

  9. Docker容器的数据卷(data volume),数据卷容器,数据卷的备份和还原。

    Docker容器的数据卷(data volume),数据卷容器,数据卷的备份和还原. 数据卷就是数据(一个文件或者文件夹). Docker的理念之一是将应用与其运行的环境打包,docker容器的生命周 ...

随机推荐

  1. python学习日记(函数进阶)

    命名空间 内置命名空间 存放了python解释器为我们提供的名字:print,input...等等,他们都是我们熟悉的,拿过来就可以用的方法. 内置的名字在启动解释器(程序运行前)的时候被加载在内存里 ...

  2. Nagios 监控 Mysql

    被监控机的Mysql监控创建专用数据库.专用数据库账户mysql -uroot -pcreate database nagios_monitor;grant select on nagios_moni ...

  3. Android ViewSwitcher 的功能与用法

    ViewSwitcher 代表了视图切换组件, 本身继承了FrameLayout ,可以将多个View叠在一起 ,每次只显示一个组件.当程序控制从一个View切换到另个View时,ViewSwitch ...

  4. [2017-7-27]Android Learning Day5

    总结篇! 吭哧吭哧了三天,最近不断研究<第一行代码:第二版>170多页的那个新闻实践项目,虽然也没有用到数据库和一些Web爬虫的知识,新闻数据都是随机生成的字符串...... 但还是很开心 ...

  5. bootstrap boosting bagging辨析

    http://blog.csdn.net/jlei_apple/article/details/8168856

  6. bzoj3796(后缀数组)(SA四连)

    bzoj3796Mushroom追妹纸 题目描述 Mushroom最近看上了一个漂亮妹纸.他选择一种非常经典的手段来表达自己的心意——写情书.考虑到自己的表达能力,Mushroom决定不手写情书.他从 ...

  7. BZOJ2406矩阵

    题目描述 题解 最大值最小,一眼二分没的说. 然后考虑建出这么个图,每行看做一个点,每列看做一个点,每个点看做一条连接行与列的边,源点向每行连s-mid__s+mid的边,行与列连L__R的边,列到汇 ...

  8. [HNOI2007]梦幻岛宝珠(背包)

    给你N颗宝石,每颗宝石都有重量和价值.要你从这些宝石中选取一些宝石,保证总重量不超过W,且总价值最大为,并输出最大的总价值.数据范围:N<=100;W<=2^30,并且保证每颗宝石的重量符 ...

  9. NOIP引水入城(dfs)

    为了使居民们都尽可能饮用到清澈的湖水,现在要在某些城市建造水利设施.水利设施有两种,分别为蓄水厂和输水站.蓄水厂的功能是利用水泵将湖泊中的水抽取到所在城市的蓄水池中. 因此,只有与湖泊毗邻的第1 行的 ...

  10. php记录

    PHP反射API 反向代理使用https协议,后台Tomcat使用http,redirect时使用错误协议的解决办法 多记几个导出公式,手中有粮,心中不慌 哈哈哈 PhpExcel中文帮助手册 Php ...