gpt4 book ai didi

Docker临时文件策略

转载 作者:IT老高 更新时间:2023-10-28 12:40:56 29 4
gpt4 key购买 nike

我的 docker 生成了一些临时文件。

是否有关于这些的鼓励策略?

如果我把它们放到 /tmp 中,I'm not sure他们会被清除的。 (编辑说明:链接已失效。问题是,“默认 cronjobs 是否在 docker 容器中执行?”)

或者我应该从主机暴露卷/tmp

最佳答案

我不知道有任何鼓励使用 Docker 管理临时文件的方法,因为这主要取决于您需要如何使用应用程序处理这些临时文件(是否应该在重启时删除它们?定期删除?...)

根据您的需要,您有多种可能性:

使用 Docker tmpfs mount

您可以挂载一个 tmpfs 卷,该卷会在容器运行期间持久保存数据(即容器停止时卷中的数据将被删除),例如:

docker run --mount type=tmpfs,destination=/myapp/tmpdir someimage

如果您(可以)定期重新启动容器并且临时数据可能会在容器重新启动时重新创建,这可能会很有用。但是,如果您需要在容器运行时清理临时数据,这不是一个好的解决方案,因为您需要停止容器以清理临时数据。

编辑:根据@alexander-azarov 的评论,默认情况下 tmpfs 卷大小是无限制的,存在容器耗尽所有机器内存的风险。使用 tmpfs-size建议使用标志来降低这种风险,例如 docker run --mount type=tmpfs,destination=/app,tmpfs-size=4096

写入 container writable layer

容器的可写层是在没有挂载卷的情况下将所有数据写入容器的地方。它会在容器重启时持续存在,但如果容器被删除,它将被删除。

这样临时数据只有在容器被删除时才会被删除。对于短生命周期的容器,它可能是一个很好的解决方案,但对于长生命周期的容器却不是。

bind mount 在容器中安装主机 /tmp

例如:

docker run -v /tmp/myapp-tmp-dir:/myapp/tmpdir someimage

这将导致所有数据写入主机/tmp/myapp-tmp-dir目录,结果取决于主机如何管理/tmp(大多数情况下,机器重启后数据会被清除)

Create and mount a volume将数据管理到

您可以创建一个包含您的数据的卷,例如:

docker run --mount source=myappvol,target=/myapp/tmpdir someimage

并管理卷中的数据:mount-it 在另一个容器中并清理数据、删除卷等。


这些是最常见的(几乎)完全依赖 Docker 功能的解决方案。另一种可能性是直接从容器中运行的软件或应用程序处理临时文件,但这更多是与应用程序相关的问题,而不是与 Docker 相关的问题。

关于Docker临时文件策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42816048/

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