如果我不在 Compose 文件的顶级“volumes”键中声明重用卷会怎样?

如果我不在 Compose 文件的顶级“volumes”键中声明重用卷会怎样?

撰写规范指出:

要在多个服务中重复使用卷,必须在顶级volumes键中声明一个命名卷。

我目前正在尝试调试一个存在 docker bind mount 问题的应用程序。我注意到此应用程序的 compose.yaml 文件声明了${EXTRA_VOLUME}每个服务下的卷。

其他所有重用卷均 (1) 在使用它的服务下声明,并且 (2) 在顶级volumes键下声明。因此,其他卷均符合规范。

(1) 在使用它的服务下声明${EXTRA_VOLUME},但未在顶级volumes键下声明。

所以,我想知道:发生了什么${EXTRA_VOLUME}?我应该预料到什么问题?

答案1

Docker 有专门为此设立的页面--volume,他们在其中讨论了卷、隐式绑定挂载(使用)和显式绑定挂载(使用)之间的差异--mount

总而言之,在上下文中docker composevolumes:顶层部分用于声明必须经过卷驱动程序的卷(例如,本地文件系统支持的卷/var/lib/docker/volumes、NFS 挂载、SMB 挂载、EBS 块卷等)。Docker 控制卷的生命周期,包括创建、挂载、删除等。

绑定挂载文件系统路径提供了类似的功能,但它不受 docker 管理:它只是一个在启动容器时在给定(内部)路径上可访问的文件系统路径/文件。因为它非常简单,并且不涉及卷驱动程序,所以它不需要(实际上,它不应该!)被声明为条目volume:

相关内容