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

Mohammed Noureldin:

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

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

问候

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

dockerfile中的VOLUME和-v作为docker run参数之间的区别

docker run -v <dir>与Dockerfile的VOLUME <dir>

docker run --user和--group-add参数之间的区别

Dockerfile中RUN和CMD之间的区别

Scala中类参数声明之间的区别

Docker Volumes中-volume和-volumes-from之间的区别

Dockerfile中的Docker卷和VOLUME

在C ++容器中作为模板参数提供的分配器与作为构造函数参数提供的分配器之间的区别?

将python中的ffill作为链接方法和参数之间有什么区别?

c中作为函数参数的“ char [] name”和“ char name []”之间的区别

将方法作为参数传递时,Blazor中“ @MethodName”和“ MethodName”之间的区别?

Java中参数与参数之间的区别

Dockerfile中RUN CD和WORKDIR之间的区别

在C和C ++中,作为函数参数的int ** a和int a [] []之间的确切区别是什么?

将通道作为正式参数传递给闭包与使用父范围中定义的通道之间的区别?

$ this-> getRequest()和在Symfony 2中将Request作为参数传递之间有什么区别

使用泛型和协议作为类型参数之间的区别,在函数中实现它们的优缺点是什么

在C / C ++中,将数组作为形式参数传递为int arr []和int arr [N]之间的区别

Dockerfile中的Docker VOLUME命令无法按预期工作

Dockerfile中的多个RUN条目和一个RUN条目之间有什么区别?

参数中的前向声明与“常规”前向声明之间的区别

Docker:docker run和docker service之间的区别

作为全局变量和参数的角度之间的区别?

在Docker中,与commit和dockerfile的区别

将docker run参数放入Dockerfile

1作为函数声明中的参数类型

“ volume”参数在docker中如何工作?

Dockerfile与docker-compose VOLUME

使用docker run命令将参数传递给Dockerfile中的CMD