有人可以帮我理解一下两者之间的区别吗?
VOLUME
输入Dockerfile
(图像构建层)
和
-v
发出docker run
-v/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
in中有Dockerfile
什么用?
容器文件系统由层组成,因此在其中写入比普通文件系统要慢且受限制(由于层数固定)。
您VOLUME
在中声明Dockerfile
以表示容器将在哪里写入应用程序数据。例如,一个数据库容器,无论放入什么容器中,其数据都会进入一个卷中docker run
。
如果您为JBoss创建一个docker容器,并且想使用快速文件系统访问,则libaio
需要将数据目录声明为,VOLUME
否则JBoss将在启动时崩溃。
总之,VOLUME
无论您做什么,都声明一个卷docker run
。实际上,docker run
您不能撤消在中VOLUME
所做的声明Dockerfile
。
问候
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句