首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >已成为卷一部分的目录的Docker卷。

已成为卷一部分的目录的Docker卷。
EN

Stack Overflow用户
提问于 2022-12-01 10:00:29
回答 1查看 23关注 0票数 0

我在Docker容器中运行一个应用程序,并将其整个app-data目录公开给主机。容器中的app-data目录包含许多文件和目录,也是一个logs子目录,我希望对其进行不同的处理,并将其映射到主机上的另一个磁盘分区。我的docker-compose.yml现在包含以下内容:

代码语言:javascript
复制
volumes:
  - /mnt/app:/var/app-data
  - /tmp/logs:/var/app-data/logs

虽然这似乎有效,但我遇到了一个我不明白的副作用。启动应用程序后,/tmp/logs目录正确地包含应用程序日志,但/mnt/app目录现在包含一个空的logs目录:

代码语言:javascript
复制
drwxr-xr-x.  2 root      root       4096 Dec  1 10:47 logs

这个空目录从何而来?这是预期的码头行为和完全安全的部署方式吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-12-01 11:49:56

这个空目录需要作为嵌套挂载的挂载点。

第一个重要的细节是Docker在内部按照容器路径对所有挂载进行排序,并按顺序挂载它们。因此,/var/app-data挂载是在Docker开始考虑/var/app-data/logs目录之前完成的。

当Docker执行绑定挂载时,它使用Linux 挂载(2)系统调用。Docker需要告诉内核要挂载什么以及在哪里挂载它。如果挂载点不存在,Docker首先创建它。

在您的场景中,在挂载/var/app-data之后,目录/var/app-data/logs不存在,所以Docker在实际挂载之前创建目录。但是,当它创建目录时,外部目录已经被挂载,所以当它创建目录时,它也会在主机系统上创建它。

这是使用嵌套挂载的正常结果,无需担心。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74640062

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档