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