Docker数据卷用三种方法帮你分析volume

bea3596dd7f788d1b49202c15a3e2d9c.png

平常我们搭建容器最重要的是文件管理的保护和使用,一般正常的是用-v映射容器中的文件夹到本地,这样我们可以直接在主机编写文件,没必要再进入容器进行修改

一、单个容器数据卷映射

举例:新建一个容器可以映射本地/data/nginx/conf.d到容器中/etc/nginx/conf.d

docker run -d -it -v /data/nginx/conf.d:/etc/nginx/conf.d -p 80:80 --name=nginx nginx /bin/bash

 这样可以通过编写本机/data/nginx/conf.d/*.conf实现nginx的使用

二、多个容器共同访问数据卷实现数据的实时同步

1、创建nginx01

docker run -d -it -v nginx:/etc/nginx/conf.d -p 81:80 --name=nginx01 nginx /bin/bash

这里的-v nginx:/etc/nginx/conf.d这里的nginx是一个volum卷标名称(nginx前面没有任何路径标识),也可以像上面一样指定一个本地路径,这里单独的nginx用来更好讲解volume数据卷标

用docker volume ls可以查看系统的所有volume卷标

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5LiJ6aKX6I2J5Li2,size_20,color_FFFFFF,t_70,g_se,x_16

docker volume inspect nginx用来查看详细的nginx卷标信息及主机路径

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5LiJ6aKX6I2J5Li2,size_19,color_FFFFFF,t_70,g_se,x_16

这样可以通过编写本机"/var/lib/docker/volumes/nginx/_data/*.conf实现nginx的使用

2、创建nginx02容器,挂载mysql01容器中的数据卷
 docker run -d -it -p 82:80 --name=nginx02 --volumes-from=nginx01 nginx /bin/bash

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5LiJ6aKX6I2J5Li2,size_20,color_FFFFFF,t_70,g_se,x_16

可以使用inspect命令来查看nginx02的卷标挂载位置可以看到和nginx01一样

docker inspect nginx02

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5LiJ6aKX6I2J5Li2,size_18,color_FFFFFF,t_70,g_se,x_16

3、这样我们进入/var/lib/docker/volumes/nginx/_data,创建一个song.conf可以同时同步到nginx01和nginx02

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5LiJ6aKX6I2J5Li2,size_19,color_FFFFFF,t_70,g_se,x_16

可以看到不管是nginx01,nginx02还是主机更新的文件都可以在容器中更新

三、写一个简单的Dockerfile来时间卷标管理 

1、编写一个简单的Dockerfile文件

vim Dockerfile (构建指令可以参考博客dockers章节 )

FROM nginx
MAINTAINER usersong<song@cityhouse.cn>
VOLUME ["/etc/nginx/conf.d"]
CMD echo "----end---"
CMD /bin/bash

2、运行Dockerfile文件

通过docker build -f Dockerfile -t nginx:v1 .来运行dockerfile,-t指定镜像名称和版本,记得后面有一个"." dockerfile构建过程就是上面写的4部

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5LiJ6aKX6I2J5Li2,size_18,color_FFFFFF,t_70,g_se,x_16

这个就是我们用dockerfile自己创建的一个容器nginx:v1

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5LiJ6aKX6I2J5Li2,size_20,color_FFFFFF,t_70,g_se,x_16

 3、开始用编写的镜像创建容器,并查看容器的mounts信息,这样可以实现提前构建好volume卷标信息

docker run -d -it -p 81:80 --name=nginx01 nginx:v1 /bin/bash 

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5LiJ6aKX6I2J5Li2,size_20,color_FFFFFF,t_70,g_se,x_16

docker run -d -it -p 82:80 --name=nginx02 nginx:v1 /bin/bash

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5LiJ6aKX6I2J5Li2,size_20,color_FFFFFF,t_70,g_se,x_16

  • 11
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三颗草丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值