有人可以帮我理解一下两者之间的区别吗?VOLUME
中的Dockerfile
命令(图像构建层)
和
发出-v
-v docker run
命令(容器构建层)时的/xyz/bla
参数。
我知道-v
参数很简单,它只是将目录从主机公开到容器,反之亦然,但是VOLUME
中的Dockerfile
表现如何不同?
最佳答案
-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,
所以问题是:
VOLUME
中Dockerfile
的用途是什么?容器文件系统由层组成,因此在其中写入比普通文件系统要慢且受限制(由于层数固定)。
您在
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/