当前位置: 首页 > 面试题库 >

Dockerfile中的VOLUME声明与-v作为docker run参数之间的区别

壤驷德宇
2023-03-14
问题内容

有人可以帮我理解一下两者之间的区别吗:

VOLUME输入命令Dockerfile(图像构建层)

-v发出docker run -v/xyz/bla命令时的参数(容器构建层)。

-v参数对我来说很清楚,它只是将目录从主机公开到容器,反之亦然,但是VOLUMEDockerfile行为上有何不同?


问题答案:

-v参数和VOLUME关键字几乎是相同的。您可以使用-v具有与相同的行为VOLUME

docker run -v /data

如同

VOLUME /data

但是-v还有更多用途,其中之一是映射到该卷的位置:

docker run -v data:/data # Named volumes
docker run -v /var/data:/data # Host mounted volumes, this is what you refer to -v use, but as you can see there are more uses,

所以问题是:VOLUMEin中有Dockerfile什么用?

容器文件系统由层组成,因此在其中写入比普通文件系统要慢且受限制(由于层数固定)。

VOLUME在中声明Dockerfile以表示您的容器将在哪里写入应用程序数据。例如,一个数据库容器,无论放入什么容器中,其数据都会进入一个卷中docker run

如果您为JBoss创建一个docker容器,并且想使用快速文件系统访问,则libaio需要将数据目录声明为,VOLUME否则JBoss将在启动时崩溃。

总之,VOLUME无论您做什么,都声明一个卷docker run。实际上,docker run您不能撤消在中VOLUME所做的声明Dockerfile

问候



 类似资料:
  • 问题内容: 我正在经历一些面试问题。对于这个问题,我无法给出可靠的答案: Java中参数与参数之间的区别? 它们有何不同? 问题答案: 通常,参数是方法定义中显示的参数。参数是在运行时传递给方法的实例。 您可以在此处查看说明:http : //en.wikipedia.org/wiki/Parameter_(computer_programming)#Parameters_and_argument

  • 问题内容: 我有一个问题:这两个声明有什么区别? 是一样的吗? 问题答案: 在可变参数上 方法参数声明中的构造通常称为varargs。在JLS中,它称为 可变arity 参数。 JLS8.4.1格式参数 列表中的最后一个形式参数是特殊的;它可以是 可变 Arity参数,由类型后面的省略号表示。 如果最后一个形式参数是类型的可变arity参数,则考虑定义类型的形式参数。然后,该方法是 可变Arity

  • 问题内容: “ Prepared Statement”是Statement的稍强版本,并且应始终至少与Statement一样快捷且易于处理。 准备好的语句可能已参数化 大多数关系数据库通过四个步骤来处理JDBC / SQL查询: 解析传入的SQL查询 编译SQL查询 规划/优化数据采集路径 执行优化的查询/获取并返回数据 对于发送到数据库的每个SQL查询,一个Statement将始终执行上述四个步

  • 本文向大家介绍Java中定义和声明之间的区别。,包括了Java中定义和声明之间的区别。的使用技巧和注意事项,需要的朋友参考一下 对于定义和声明之间的区别,应该首先考虑其字面含义,其中包括声明或声明的“声明”方法,而描述某些实体的“定义”方法。 以下是定义和声明之间的重要区别。 序号 键 声明 定义 1 概念 声明的概念包括通知编译器有关变量的属性,例如变量的名称,其持有的值的类型以及初始值(如果有

  • 问题内容: 我想加深对Docker容量的了解,并且很难弄清以下内容的差异/用例: 该命令 的 文件中的条目 我特别不明白如果将条目与标志结合在一起会发生什么。 问题答案: 卷是存储在 您可以在Dockerfile中声明它,这意味着每次从映像启动容器时,即使没有任何选择,也会创建该卷( 空 )。 您可以在运行时声明它。 结合使用两个(+ )意味着您可以将主机文件夹的内容挂载到容器中保留的卷中 doc

  • 问题内容: JUnit框架包含2个类(显然是在不同的包中),每个类的方法似乎非常相似。有人可以解释为什么吗? 我要参考的类是:和。 问题答案: (JUnit 3的)旧方法是通过扩展标记测试类。那继承了它自己,并且您的测试类获得了以这种方式调用assert方法的能力。 从JUnit版本4开始,该框架用于标记测试。因此,您不再需要扩展。但这意味着,断言方法不可用。但是您可以静态导入新类。这就是为什么新