有人可以帮我理解一下两者之间的区别吗?
VOLUME中的Dockerfile命令(图像构建层)



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

我知道-v参数很简单,它只是将目录从主机公开到容器,反之亦然,但是VOLUME中的Dockerfile表现如何不同?

最佳答案

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

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,

所以问题是:VOLUMEDockerfile的用途是什么?

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

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

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

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

问候

关于docker - Dockerfile中的VOLUME声明与-v作为docker run参数之间的区别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40163036/

10-16 11:00