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. ViewHolder模式的简洁写法

    大家通常怎么写ViewHolder呢? ViewHolder holder = null; if(convertView == null){ convertView = mInflater.infla ...

  2. emwin 存在多个窗口时,如何获取当前所在窗口

    @2019-02-20 [小记] emwin存在多个窗口时,如何获取当前所在窗口 > emwin 之获取当前窗口的一种方法 [需求] 用于在代码中获知当前呈现的是哪个窗口 [方法] 进入新窗口将 ...

  3. 「JLOI2015」骗我呢 解题报告?

    「JLOI2015」骗我呢 这什么神仙题 \[\color{purple}{Link}\] 可以学到的东西 对越过直线的东西翻折进行容斥 之类的..吧? Code: #include <cstd ...

  4. [HNOI2010]物品调度

    题目描述 现在找工作不容易,Lostmonkey费了好大劲才得到fsk公司基层流水线操作员的职位.流水线上有n个位置,从0到n-1依次编号,一开始0号位置空,其它的位置i上有编号为i的盒子.Lostm ...

  5. 哈尔滨工程大学ACM预热赛 G题 A hard problem(数位dp)

    链接:https://ac.nowcoder.com/acm/contest/554/G Now we have a function f(x): int f ( int x ) {     if ( ...

  6. 组件之间的数据传递--Vuex

    安装Vuex: npm install Vuex -S 在main.js中引入 import Vue from 'vue' import App from './App' import Vuex fr ...

  7. A1106. Lowest Price in Supply Chain

    A supply chain is a network of retailers(零售商), distributors(经销商), and suppliers(供应商)-- everyone invo ...

  8. Python之常用模块--collections模块

    认识模块 什么是模块? 常见的场景:一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀. 但其实import加载的模块分为四个通用类别: 1 使用python编写的 ...

  9. mysql数据库的优化和查询效率的优化

    一.数据库的优化 1.优化索引.SQL 语句.分析慢查询: 2.设计表的时候严格根据数据库的设计范式来设计数据库: 3.使用缓存,把经常访问到的数据而且不需要经常变化的数据放在缓存中,能节约磁盘IO: ...

  10. 项目管理干货——项目管理入门级书籍(附赠5G项目管理书籍电子版)

    各位项目经理我们都是在不断的学习和自我学习中不断成长的,所以我们需要多看书,才能做好一个项目经理,但是很多人,在挑选书籍的时候犯了难,今天我就把自己学习的时候看的那些书单整理出来,大家有需要的可以留言 ...