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是一致的,有利于配置和的规范和标准化,也带来一定的局限性,使用时需要综合考虑
- 第 6 章 存储 - 042 - 用 volume container 共享数据
volume container volume container 是专门为其他容器提供 volume 的容器.它提供的卷可以是 bind mount,也可以是 docker managed volu ...
- 用 volume container 共享数据 - 每天5分钟玩转 Docker 容器技术(42)
volume container 是专门为其他容器提供 volume 的容器.它提供的卷可以是 bind mount,也可以是 docker managed volume.下面我们创建一个 volum ...
- 40-用 volume container 共享数据
volume container 是专门为其他容器提供 volume 的容器.它提供的卷可以是 bind mount,也可以是 docker managed volume.下面我们创建一个 volum ...
- data-packed volume container - 每天5分钟玩转 Docker 容器技术(43)
在上一节的例子中 volume container 的数据归根到底还是在 host 里,有没有办法将数据完全放到 volume container 中,同时又能与其他容器共享呢? 当然可以,通常我们称 ...
- 043、data-packed volume container (2019-03-06 周三)
参考https://www.cnblogs.com/CloudMan6/p/7203285.html volume container 的数据归根到底还是在host上,我们能不能把数据完全放到 ...
- 第 6 章 存储 - 043 - data-packed volume container
data-packed volume container 将数据打包到镜像中,然后通过 docker managed volume 共享 1.先用Dockerfile 构建镜像 ADD 将静态文件添加 ...
- 41-data-packed volume container
在上一节的例子中 volume container 的数据归根到底还是在 host 里,有没有办法将数据完全放到 volume container 中,同时又能与其他容器共享呢? 当然可以,通常我们称 ...
- 如何共享数据?- 每天5分钟玩转 Docker 容器技术(41)
数据共享是 volume 的关键特性,本节我们详细讨论通过 volume 如何在容器与 host 之间,容器与容器之间共享数据. 容器与 host 共享数据 我们有两种类型的 data volume, ...
- Docker容器的数据卷(data volume),数据卷容器,数据卷的备份和还原。
Docker容器的数据卷(data volume),数据卷容器,数据卷的备份和还原. 数据卷就是数据(一个文件或者文件夹). Docker的理念之一是将应用与其运行的环境打包,docker容器的生命周 ...
随机推荐
- Android 简单天气预报
IDE: Android studio3.1.2 界面: activity_main.xml
- php unset对json_encode的影响
先运行一段php代码: $a = Array(0=>'hello world', 1=>'girl', 2=>'boy'); var_dump(json_encode($a)); u ...
- Apache 安装及常用参数设置
禁用 selinux setenforce 0 sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/confi ...
- 【题解】 bzoj2462: [BeiJing2011]矩阵模板
题面戳我 Solution 二维矩阵\(hash\),判断即可 自己YY了一个方法,\(bzoj\)T到飞,(一开始还用的三\(hash\)),交到luogu貌似跑的不慢啊qwq (我是不会告诉你全输 ...
- 「POJ3696」The Luckiest number【数论,欧拉函数】
# 题解 一道数论欧拉函数和欧拉定理的入门好题. 虽然我提交的时候POJ炸掉了,但是在hdu里面A掉了,应该是一样的吧. 首先我们需要求的这个数一定可以表示成\(\frac{(10^x-1)}{9}\ ...
- X-PACK详解
启用和禁用启用和禁用X-Pack功能默认情况下,所有X-Pack功能都被启用.您可以启用或禁用特定的X-Pack功能elasticsearch.yml,kibana.yml以及logstash.yml ...
- [AH2017/HNOI2017]礼物(FFT)
题目描述 我的室友最近喜欢上了一个可爱的小女生.马上就要到她的生日了,他决定买一对情侣手 环,一个留给自己,一 个送给她.每个手环上各有 n 个装饰物,并且每个装饰物都有一定的亮度.但是在她生日的前一 ...
- 解题:CF622F The Sum of the k-th Powers
题面 TJOI2018出CF原题弱化版是不是有点太过分了?对,就是 TJOI2018 教科书般的亵渎 然而我这个问题只会那个题的范围的m^3做法 回忆一下1到n求和是二次的,平方求和公式是三次的,立方 ...
- vetur插件提示 'v-for' directives require 'v-bind:key' directives.错误的解决办法
在用vscode编写vue代码时,因为安装的有vetur插件,所以当代码中有v-for语法时,会提示 [vue-language-server] 'v-for' directives require ...
- R: 修改镜像、bioconductor安装及go基因富集分析
1.安装bioconductor及go分析涉及的相关包 source("http://bioconductor.org/biocLite.R") options(BioC_mirr ...