gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-28 12:36:20 26 4
gpt4 key购买 nike

谁能帮我理解以下之间的区别:

Dockerfile 中的 VOLUME 命令(镜像构建层)

发出 docker run -v /xyz/bla 命令时的

-v 参数(容器构建层) .

-v 参数对我来说很清楚,它只是将一个目录从主机公开到容器,反之亦然,但是 Dockerfile< 中的 VOLUME 如何 行为不同?

最佳答案

-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,

所以问题是:Dockerfile中的VOLUME有什么用?

容器文件系统是由层组成的,所以写在那里,比普通文件系统慢且有限(因为层数固定)。

您在 Dockerfile 中声明 VOLUME 以表示容器将写入应用程序数据的位置。例如一个数据库容器,无论你在 docker run 中放入什么,它的数据都会进入一个卷中。

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

总而言之,VOLUME 声明一个卷,无论你在 docker run 中做什么。事实上,在 docker run 中,您无法撤消 Dockerfile 中的 VOLUME 声明。

问候

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

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com