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

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

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

如果-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 主机目录:容器目录 这样的指令。

    推荐阅读
  • 鱿鱼放在冷冻还是冷藏(如何保存鱿鱼)

    以下内容大家不妨参考一二希望能帮到您!鱿鱼放在冷冻还是冷藏买回来的鲜鱿鱼最好是直接放在冰箱的冷冻室里面,因为如果在夏天,天气比较炎热,像这种海鲜会非常容易变质,放在冷藏室里面基本上保存不了多久就会变味。而如果是制作好的干鱿鱼,那么只需要放在阴凉干燥,或者是冷藏室里面就可以了,干鱿鱼保存起来会比鲜鱿鱼要容易的多,基本上短时间内是不会出现变质问题的。

  • 意饺怎么吃(意饺如何吃)

    马苏里拉芝士、香草碎、意饺、橄榄油、洋葱、蒜末、番茄、番茄酱、黑胡椒粉、帕马善芝士各适量;,我来为大家科普一下关于意饺怎么吃?倒入番茄丁和番茄酱适量,根据口味加盐,黑胡椒粉和香草碎适量,用铲子把番茄丁铲碎,如果觉得太干,就稍微加点儿水,转小火慢慢咕嘟一会儿,让酱里的材料味道融合。把拌好的内容倒入烤盘,摊平,上面撒上切碎或者切丝的芝士。放入预热至华氏400度的烤箱,烤至芝士金黄即可。

  • 元宵祝福成语(形容元宵祝福祝贺的成语)

    万事如意、福如东海、鹏程万里、凤凰于飞、繁荣兴旺,下面我们就来说一说关于元宵祝福成语?元宵祝福成语万事如意、福如东海、鹏程万里、凤凰于飞、繁荣兴旺一帆风顺、喜气洋洋、锦绣前程、恭贺新禧、长命百岁聪明过人、百年好合、才高八斗、朝朝暮暮、日进斗金情投意合、大开眼界、鸾凤和鸣、时运亨通、财运亨通安居乐业、相亲相爱、一路福星、一路平安、春风得意呕心沥血、天真烂漫、心心相印、灯火万家、良宵美景

  • 椒盐肉排(椒盐肉排咋做呢)

    5、鸡蛋、淀粉放入碗内,加少许酱油,调成糊,将排骨放入叠匀。

  • 康德名言感悟短句(康德智慧语录100句)

    康德是启蒙运动时期最后一位主要哲学家,是德国思想界的代表人物。此外,康德在宗教哲学、法律哲学和历史哲学方面也有重要论著。永远是心地善良的标志。酒,因而成为一种道德的性质成为搬运率直之心的物质。人们尽管完全可以从时间中除去显象,但就一般显象而言却不能取消时间自身。惟有在时间中,显象的一切现实性才是可能的。

  • 黑豆和山药能一起吃吗(你知道答案了吗)

    下面希望有你要的答案,我们一起来看看吧!材料:炖好的羊肉和汤适量、黑豆200克、山药1/2根、红枣3个、姜丝5克、香菜段20克、盐3克、胡椒粉1克。制作方法:黑豆洗净提前浸泡5小时。山药洗净削去皮,切成滚刀块。将泡好的黑豆和山药块直接放进炖好的羊肉汤锅中,加入红枣、姜,大火烧开。炖煮20分钟,至黑豆、山药成熟后,加入盐和胡椒粉及香菜。关火出锅,即可食用。

  • 天子驾六辆车什么意思(天子驾六辆车的翻译)

    下面更多详细答案一起来看看吧!天子驾六辆车什么意思“天子驾六辆车”是大型车马陪葬坑。车马坑规模大,车子类型多,摆放整齐,气势宏伟,是当今世界独一无二的“驾六”遗存,东周瑰宝,举世无双!天子驾六辆车是我们古代的礼制的一种行为。皇帝级别的六匹马拉的两辆马车,即著名的“天子驾六”。天子所御驾六,其余副车皆驾四。

  • 终于被你推到心碎的边缘什么歌(第一滴泪歌曲歌词)

    跟着小编一起来看一看吧!终于被你推到心碎的边缘什么歌终于被你推到心碎的边缘是由曾一鸣演唱的第一滴泪。

  • 瓦罐炖牛肉怎么做好吃(瓦罐炖牛肉的烹饪方法)

    瓦罐炖牛肉怎么做好吃主料:精选牛肉3斤。锅放火上,加入清水,下入牛肉块和葱头块、胡萝卜块、芹菜段、香叶、黑胡椒粒,并用精盐、绍酒、味精调好口味。水开后,调小火炖至牛肉块酥烂时捞出,只要牛肉和汤。葱头片用黄油煸炒出香味,倒入罐内。上席前,加点白兰地酒和青蒜片稍焖片刻即可。

  • 包子如何做白而蓬松(香喷喷的包子)

    对此,儿子小军很是看不惯。老憨让儿子帮忙卖包子,小军也是三天打鱼,两天晒网。为儿子,老憨操碎了心。小军的左腿断了后,装上了假肢,走路一瘸一拐的。接下来的几天,大雪一直时断时续地下,老憨的包子铺却始终繁忙。老憨更加肯定了自己的猜测,于是关了包子铺的门,悄悄跟在两人身后。说着,老憨一面给大伙分发包子,一面吩咐小军和蓝工装,把这几天多卖的钱退还给大伙。