小编典典

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

docker

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

VOLUME输入命令Dockerfile(图像构建层)

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

-v参数对我来说很清楚,它只是将目录从主机公开到容器,反之亦然,但是VOLUMEDockerfile行为上有何不同?


阅读 1199

收藏
2020-06-17

共1个答案

小编典典

-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

问候

2020-06-17