Docker系列7:逻辑卷

网友投稿 340 2022-10-30

Docker系列7:逻辑卷

一、存储卷简介

1、什么是存储卷(volume)

2、存储卷的类型

Bind mount volume:Docker managed volume

Bind mount volume

这种类型是指在创建容器的时候,需要同时指定容器中的挂载点和宿主机的一个目录,这样来完成挂载

Docker managed volume

这种类型是在创建容器的时候,仅仅需要同指定容器中的挂载点,不需要指定宿主机中的目录就可以完成挂载。宿主机中的目录会由docker自动生成,而且是随机生成,默认:/var/lib/docker/vfs/dir/xxxx

案例1:创建一个docker管理的卷

[root@host1 ~]# docker run --name httpd1 -it --rm -v /data busybox / #  / # echo "test message">>/data/test.txt / #

[root@host1 ~]# docker inspect httpd1 "Mounts": [             {                 "Type": "volume",                 "Name": "636a1967c63705161f941550edf4b0ced1584bf71087596ad61a49df4cd6ae4c",                 "Source": "/var/lib/docker/volumes/636a1967c63705161f941550edf4b0ced1584bf71087596ad61a49df4cd6ae4c/_data",                 "Destination": "/data",                 "Driver": "local",                 "Mode": "",                 "RW": true,                 "Propagation": ""             }         ],

[root@host1 ~]# cd /var/lib/docker/volumes/636a1967c63705161f941550edf4b0ced1584bf71087596ad61a49df4cd6ae4c/_data [root@host1 _data]# cat test.txt  test message [root@host1 _data]#

案例2:创建容器,使用宿主机的/disk目录挂载到容器中

[root@host1 ~]# docker run --name httpd1 -it --rm -v /disk:/data busybox / #  / # echo "test message">/data/t.txt / #

[root@host1 ..]# cat /disk/t.txt  test message

宿主机上的/disk如果不存在,会自动创建

我们在设置容器所用的存储卷的时候,还可以设置容器所用的存成卷和另一个容器的存储卷相同

案例3:比如前面我们做好了容器httpd1,这里我们再做一个httpd2,让2和1用相同的存储卷

[root@host1 ..]# docker run --name httpd2 --rm -it --volumes-from httpd1 busybox / #  / # ls /data/ t.txt / #

3、基础架构容器使用举例

首先我们可以先做个容器,这个容器不需要运行,而是仅仅作为一个基础架构支撑容器新建容器的卷复制于这个容器,比如,复制三个容器出来,第一个是nginx作为反向代理,第二个是apache出来静态请求,第三个是php处理php请求:

这个基础架构支撑容器,还可以提供一个公共的名称空间,这样上面的三个容器就有了相同的IP,主机名,而且也可以基于127进行通信了

案例:基于基础架构容器制作容器

1)先创建基础架构容器

[root@host1 ~]# docker run --name base1 -it --rm -v /disk:/data busybox

2)创建nginx容器,复制基础架构的卷,并使用基础架构名空间

[root@host1 ..]# docker run --name nginx1 \ > --network container:base1 \ > --volumes-from base1 -it nginx:1.14-alpine

过滤容器属性数据

docker inspect的结果是一个列表,在列表列表中是json格式的字符串如果此时要过滤数据,其格式是 docker inspect -f {xxx} b5 来实现过滤效果-f后面是双{},外侧的{}是固定格式,内侧的{}表示从{}中进行过滤过滤元素的格式 -f '{{.path.item}}'

[root@host1 ..]# docker inspect httpd1 -f '{{.Id}}' 24053ef79c61400f0f8a151087bfd7c1e31e004ee9b87b8a2e64f1efd72d2b52 [root@host1 ..]# docker inspect httpd1 -f '{{.State.Status}}' running

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:常见的USB接口标准都有哪些 速度又有何区别
下一篇:rj45接口定义/rj45针脚定义/rj45引脚定义
相关文章

 发表评论

暂时没有评论,来抢沙发吧~