科百科
当前位置: 首页 范文大全

dockerfile中的上下文怎么理解(中VOLUME到底有什么用)

时间:2023-07-31 作者: 小编 阅读量: 2 栏目名: 范文大全

如果-v和volume指定了同一个位置,会发生什么事呢?并不然,其实VOLUME指令只是起到了声明了容器中的目录作为匿名卷,但是并没有将匿名卷绑定到宿主机指定目录的功能。总结其实一般的dockfile如果不是数据库类的这种需要持久化数据到磁盘上的应用,都是无需指定volume的。指定volume只是为了避免用户忘记指定-v时导致的数据全部在容器中,这样的话容器一旦被删除所有的数据都丢失了。

dockerfile中的上下文怎么理解?FROM centos:latestVOLUME /share/data #声明容器中/share/data为匿名卷,今天小编就来聊一聊关于dockerfile中的上下文怎么理解?接下来我们就一起去研究一下吧!

dockerfile中的上下文怎么理解

FROM centos:latestVOLUME /share/data #声明容器中/share/data为匿名卷

这个指令很容易和启动时的-v指令搞混淆,他们之间到底有什么区别呢,什么时候需要使用volume呢?volume指令指定的位置在容器被删除以后数据文件会被删除吗?如果-v和volume指定了同一个位置,会发生什么事呢?

volume和run -v的区别,什么时候需要使用volume

容器运行时应该尽量保持容器存储层不发生写操作,对于数据库类需要保存动态数据的应用,其数据库文件应该保存于卷(volume)中。为了防止运行时用户忘记将动态文件所保存目录挂载为卷,在Dockerfile 中,我们可以事先指定某些目录挂载为匿名卷,这样在运行时如果用户不指定挂载,其应用也可以正常运行,不会向容器存储层写入大量数据。

那么Dockerfile中的VOLUME指令实际使用中是不是就是跟docker run中的-v参数一样是将宿主机的一个目录绑定到容器中的目录以达到共享目录的作用呢?

并不然,其实VOLUME指令只是起到了声明了容器中的目录作为匿名卷,但是并没有将匿名卷绑定到宿主机指定目录的功能。

当我们生成镜像的Dockerfile中以Volume声明了匿名卷,并且我们以这个镜像run了一个容器的时候,docker会在安装目录下的指定目录下面生成一个目录来绑定容器的匿名卷(这个指定目录不同版本的docker会有所不同),我当前的目录为:/var/lib/docker/volumes/{容器ID}。

总结: volume只是指定了一个目录,用以在用户忘记启动时指定-v参数也可以保证容器的正常运行。比如mysql,你不能说用户启动时没有指定-v,然后删了容器,就把mysql的数据文件都删了,那样生产上是会出大事故的,所以mysql的dockerfile里面就需要配置volume,这样即使用户没有指定-v,容器被删后也不会导致数据文件都不在了。还是可以恢复的。

volume指定的位置在容器被删除以后数据文件会被删除吗

volume与-v指令一样,容器被删除以后映射在主机上的文件不会被删除。

如果-v和volume指定了不同的位置,会发生什么事呢?

会以-v设定的目录为准,其实volume指令的设定的目的就是为了避免用户忘记指定-v的时候导致的数据丢失,那么如果用户指定了-v,自然而然就不需要volume指定的位置了。

总结

其实一般的dockfile如果不是数据库类的这种需要持久化数据到磁盘上的应用,都是无需指定volume的。指定volume只是为了避免用户忘记指定-v时导致的数据全部在容器中,这样的话容器一旦被删除所有的数据都丢失了。

那么为什么dockerfile中不提供一个能够映射为主机目录:容器目录这样的指令呢?其实这样的设计是有道理的,如果在dockerfile中指定了主机目录,这样dockerfile就不具备了可移植性了,毕竟每个人所需要映射的目录可能是不同的,那么最好的办法就是把这个权利交给每个运行这个dockerfile的人,所以才会有 run -v 主机目录:容器目录 这样的指令。

    推荐阅读
  • 王者荣耀带练平台都有哪些(王者荣耀代练平台揭秘)

    王者荣耀带练平台都有哪些?王者荣耀带练平台都有哪些王者荣耀火了之后,代练也随之多了起来,在王者荣耀聊天室里面,经常可以看到代打的身影。其实目前王者荣耀代练已经形成了一个行业,也有人开发出了专门的平台,通过搜索,小编发现了不少的王者荣耀代练平台。通过截图,我们可以看到,找代练最多的是黄金和铂金的玩家,一般都是黄金上铂金,铂金上钻石。有些人,想赢比赛却赢不了,于是花钱找代练,有些人却花钱掉段。

  • 桑葚用开水泡还是温水(桑葚用开水泡还是温水好)

    接下来我们就一起去研究一下吧!桑葚用开水泡还是温水桑葚泡水用沸水。桑葚水:鲜桑葚60克,加水煮沸后再小火煎煮10分钟,每晚睡前1小时服用。桑葚味甘,性寒,具有补肝益肾、安神益智、补血滋阴、生津止渴、润肠通便、明耳目、乌须发的作用,特别适合失眠伴有便秘、贫血、脱发、少白头、耳鸣者食用。

  • 登革热是什么(登革热有何症状)

    接下来我们就一起去了解一下吧!登革热是什么登革热是一种由登革病毒感染引起的急性虫媒传染病,而传播途径一般是由埃及伊蚊和白纹伊蚊叮咬传播,常常好发于热带及亚热带地区。它的起病非常急骤,患者可以迅速出现高热、头痛、极度疲乏,全身肌肉酸痛等症状,还有些患者可以出现皮疹、淋巴肿大的现象。

  • 西葫芦鸡蛋煎饺的做法(西葫芦鸡蛋煎饺的制作方法)

    西葫芦鸡蛋煎饺的做法食材:西葫芦300g,小麦面粉300g,鸡蛋2个,调料:葱,盐,鸡精,十三香,胡椒粉,香油适量。将面粉中加适量温水,混合在一起,揉搓成面团,盖湿布醒一会儿。西葫芦洗净,去籽,入插板上插成短细丝,放入少许盐稍腌后,用手挤出水份,沥干,葱切碎。锅内放油,油热后,入鸡蛋,用铲子将其打散,待用。煎锅内放少许油,放入饺子,小火,八分钟左右煎到熟。

  • 艾灸坐垫的功效(怎么制作艾灸坐垫)

    以下内容希望对你有帮助!艾灸坐垫的功效艾灸有温经止痛,驱寒助阳等作用,艾灸坐垫的功效也是非常的神奇,只要坐着垫子就能起到强身健体,防治疾病的作用。准备艾绒,一斤左右,缝制一个50cm*50cm的内胆布,外套比内胆要大一些,缝制内胆的时候针脚要密一些,避免艾绒漏出来。将艾绒填充到内胆中即可,套上外套,一个艾灸坐垫就完成了。

  • 熏干笋的正确方法(熏干笋的做法)

    以下内容希望对你有帮助!熏干笋的正确方法笋用水浸泡,泡软后,洗净捞起备用。五花肉500克左右,洗净切块。锅内放少许油,煎五花肉,煎到金黄色。煎好后把多余的油倒出,把蒜及辣椒放入跟五花肉一起炒,爆香后放入笋干。炒,然后加一茶匙盐,倒点生抽,可以加点老抽上色。加水没过笋,小火焖20分钟,待收汁后关火入盘。

  • 金厦环鼓游地址?附交通指南 金厦环鼓游在哪上船

    2、厦门北站出发:乘特运北站旅游直通车至和平码头下车;乘957路至思北路口站下车,步行约1.4公里至和平码头;乘BRT快1路至开禾路口站,步行约1.4公里至和平码头;乘地铁1号线至镇海路站下车,步行约800米至和平码头。

  • 官宣索尼牵手本田联手造车(本田索尼联手生产)

    据美联社10月13日报道,日本两大商业巨头本田和索尼联合成立的一家新电动汽车公司今天正式启动运营。生产将在本田在美国的其中一家工厂进行。但定价、平台和将使用的电池种类等细节尚未公布。他说,日本作为本田的本土市场排在第二,包括欧洲在内的其他市场将紧随其后,但日期尚未确定。总部设在东京的本田公司已与通用汽车公司合作,在北美共享电动汽车平台,但尚未开始销售其产品。

  • 永乐宫简介(永乐宫介绍)

    永乐宫简介永乐宫,因故址在永乐镇而命名,又名大纯阳万寿宫。永乐宫属全国重点文物保护单位,原址位于山西省芮城县永乐镇招贤村,现址位于芮城县城北3公里的龙泉村东侧。永乐宫始建于元代,施工期前后共110多年。宫殿内部的墙壁上布满永乐宫壁画。2020年2月,为致敬广大医务工作者,自疫情结束景区开放之日起至2020年12月31日,景区将向全国医务工作者免费开放。地处山西省最南端的晋、秦、豫三省交界处。

  • 什么树适合种在大门外花期长(此树试试种上两株)

    软枣猕猴桃的结果量非常大,很快在枝头上就会出现一簇簇绿色的小果子。等到结完果之后,在室内种植的软枣猕猴桃始终都能保持常绿的状态,在寒冷的冬天也可以作为一株观赏绿植来看。软枣猕猴桃作为优质品种,无论南方北方都可以养活,可以说沾土便活,而且打理非常简单,现在也是种植的最佳时机。