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. [APIO2012]守卫

    近日状态并不是很好, 很不稳, 思路也不是很清晰 希望自己能走出来 题意:有序列1~n 现给出两种区间 区间0:序号在[x, y]的节点不能有忍者 区间1:序号在[x, y]的节点区间里至少有一个忍者 ...

  2. Linux 检查端口gps命令

    由于是游戏业务,环境主要是Nginx+Tomcat+Java Program gps脚本环境以及效果图如下: #!/bin/bash function Printf (){ == ];then pri ...

  3. JLOI2015 DAY1 简要题解

    「JLOI2015」有意义的字符串 题意 给你 \(b, d, n\) 求 \[ [(\frac{b + \sqrt d}2)^n] \mod 7528443412579576937 \] \(0 & ...

  4. PHP-FPM安装报错解决

    PHP源码安装 setenforce 0--------------------------------------------------------------------安装php时的报错che ...

  5. luogu4093 序列 (cdq分治优化dp)

    设f[i]是以i位置为结尾的最长满足条件子序列的长度 那么j能转移到i的条件是,$j<i , max[j]<=a[i] , a[j]<=min[i]$,其中max和min表示这个位置 ...

  6. 编译安装Nginx和PHP(带编译mysql)

    应用场景:目前常见的LNMP架构中很多服务都采用nginx+fastcgi+php来提供服务. 测试环境:Centos 7.2 / Nginx 1.12.0 / PHP 5.6 配置步骤: 1. 下载 ...

  7. ftp sun jdk自带

    package com.italktv.colnv.stat.util; import java.io.File; import java.io.FileInputStream; import jav ...

  8. Qt5应用改变窗口大小时出现黑影

    解决方法 在启动程序时,添加-platform wayland参数 添加QT_QPA_PLATFORM=wayland-egl到系统环境变量 注意:改完后虽然没有黑影,但软件图标显示不正常,也不能正常 ...

  9. 【洛谷P3810】陌上花开

    题目大意:给定一个三维空间点的坐标,求对于任意一个点三维均小于等于这个点的点个数. 题解:学会了简单的 cdq 分治. 首先,先将第一维从小到大排序,再用类似归并排序的操作对第二维进行排序,在第二维合 ...

  10. javascript 请求action传递中文参数乱码问题

    1.js $.ajaxFileUpload        (            {                url:'<%=basePath%>uploadDatFile/fil ...