博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
docker的volume持久化操作
阅读量:7022 次
发布时间:2019-06-28

本文共 801 字,大约阅读时间需要 2 分钟。

引入持久化volume

之前我们都说过,容器间是独立存储的,并且容器内部的修改是没有被持久化的。

在前一篇中,我们就说过,容器的运行是在image外面套了个容器层,每次修改都是在容器层进行修改,并不修改到内部的image,所以在容器停止的时候,修改也就消失了。

那么比如我在一个容器里面运行一个应用,他的数据库也在该容器中的话,如果这个容器被意外的停止了,那么数据消失了,这肯定不是我们想看到的。再比如两三个应用分别跑在各自的容器里面,但是他们的数据是相通的,也就是要求他们使用的是同一个数据库,那这该怎么弄呢?

这就要引入今天要讲的持久化volume。

怎么玩volume

我们先以守护进程的方式启动一个进程,然后将里面的某个虚拟地址映射到本机的某个实际地址,具体命令如下。

我们启动完之后,用docker inspect 命令来查看某容器的详细信息。由于信息太多,我只截取了部分,将就着看看。

我们来看一下宿主机的路径和容器内部的路径指的是不是同一内存。

首先,我们先看一下宿主机的路径,并查看他的index.html文件,很明显这是nginx的欢迎页面。

然后我们修改一下这个文件,改为“我是修改的哈”,查看一下,的确是改好啦的。

接着,我们到容器里面看一下index.html,发现他也被修改啦。

那我们换个方向,先在容器里面修改,再到本机实际的地址看一下,发现实际地址也被修改啦。

具体原理

下面来说一下理由是什么?咱来图说的清楚点。

容器中的地址其实并不真实的物理路径,而是虚拟路径。当我们第一次修改实际路径的时候,其实修改了实际路径中的物理地址中的内容,当我们从容器内部去查看这个内容的时候,他其实也就是从实际路径中获取了内容,即实际路径中的物理地址中的内容。反之,也是一样的。所以总的来说,他们指向的是同一片内存。

长按下图二维码,即刻关注【学习Java的小姐姐】 领取超多学习资料哦!

转载地址:http://iscxl.baihongyu.com/

你可能感兴趣的文章
报告:10%的数据泄露事件超过1年才被发现
查看>>
自动化测试最佳实践 连载四
查看>>
自贡开通智慧城市大数据中心
查看>>
网络安全保险在中国为何鲜为人知?
查看>>
数据中心网络:渴望简单化
查看>>
移动客户端测试常用工具
查看>>
物联网,已经到来的产业“风口”
查看>>
苹果:曾收到其它国家政府请求但无关后门
查看>>
台北市智慧城市展全力促成系统整合输出
查看>>
凤凰旅游:用友优普U8+ 费控带来的管理升级
查看>>
2016分布式光伏市场适合“掘金”吗?
查看>>
2017国内传感器生产商该如何布局?
查看>>
回收站功能在 Linux 中的实现
查看>>
sql: Oracle 11g create table, function,trigger, sequence
查看>>
《电子基础与维修工具核心教程》——2.2 电阻的分类
查看>>
《MATLAB 7.0从入门到精通(修订版)》——1.5 MATLAB 7.0的通用命令
查看>>
MySQL 升级的最佳实践
查看>>
《构建高可用Linux服务器 第3版》—— 1.2 全面了解Linux服务器
查看>>
《我的视频我做主:Premiere Pro CS5实战精粹》——1.2 视频编辑基础知识
查看>>
斯人已去长风存 谈谈 CyanogenMod 的前身今世
查看>>