【问题标题】:Spring Boot & Docker using VOLUME /tmpSpring Boot 和 Docker 使用 VOLUME /tmp
【发布时间】:2015-08-08 11:04:08
【问题描述】:

有谁能解释为什么Spring Boot Docker Guide 建议添加/tmp 卷如下:

VOLUME /tmp

它解释了:

我们添加了一个指向“/tmp”的 VOLUME,因为这是 Spring Boot 应用程序默认为 Tomcat 创建工作目录的地方。效果是在你的主机上“/var/lib/docker”下创建一个临时文件,并将它链接到“/tmp”下的容器。

但是,我不太清楚您为什么想要/需要这样做。

如果 java 应用程序在容器的 /tmp 目录中创建任何文件,我看不出需要将其配置为卷,因为据我了解,这将导致文件绕过联合文件系统并在 Docker 主机中永久写入/var/lib/docker。这是否也会导致容器中创建的“临时”文件在容器停止时不会被自动删除?

如果没有这个VOLUME,我的 Spring Boot 应用程序(它确实会创建临时文件)似乎可以正常运行,但我想知道不遵循这个建议是否会产生任何负面影响。

谢谢。

【问题讨论】:

  • "这是否也会导致容器中创建的“临时”文件在容器停止时不会被自动删除?" — 仅当您在删除容器时忘记使用-v 选项时。
  • 卷上的磁盘性能优于 docker 容器分层文件系统。这就是为什么你不想在 docker 文件系统上进行磁盘密集型操作
  • 同样值得一问的是,在同一主机上运行多个 Spring Boot 容器的情况如何。他们是否共享这些工作目录?他们应该吗?
  • @dominikbrandon 当您运行多个 Spring Boot 容器时,每个容器将在主机文件系统上拥有自己的专用卷,尽管它们挂载相同的 /tmp 卷。如果您希望他们共享同一卷,那就另当别论了。

标签: docker spring-boot


【解决方案1】:

如cmets中所说,由于是联合文件系统,在容器中写入可能比在卷中写入要慢。

此外,如果您希望能够在容器重新启动之间重用临时文件,则必须使用卷,但如果不是这种情况,最好使用Docker documentation 中所述的 tmpfs 挂载。

【讨论】:

    猜你喜欢
    • 2018-01-23
    • 2018-05-29
    • 1970-01-01
    • 2021-09-15
    • 2021-04-16
    • 2016-12-24
    • 1970-01-01
    • 2019-11-24
    • 2019-04-12
    相关资源
    最近更新 更多