为什么退出时Docker容器不保存?

时间:2019-07-28 11:11:59

标签: docker

为什么Docker是这样设计的?我只能想到一个原因:避免这两个错误:

  • 重复重启
  • 部分错误

这个SO question可能是像我这样的新手关于容器“退出”时此行为的最常阅读的答案之一。但是,它没有解释原因。

1 个答案:

答案 0 :(得分:2)

如果正确运行容器,则容器中没有要保留的内容。应该注意的是,在容器的 exit 上仅删除tmpfs挂载。当删除容器时,将删除对容器文件系统的其他更改。通过使用新实例替换容器,返回到初始图像状态,我们迫使更改进入构建图像并消除状态漂移管理的代码。

查看可能丢失的各种类型的东西,这里应该保存这些更改:

  • 数据:任何持久性数据都应保存在卷中。
  • 应用程序代码和依赖项:应将它们存储在映像本身中,并使用Dockerfile构建,并将容器替换为从新映像运行的新容器。
  • 配置文件:这些文件可以作为单个文件卷挂载,只读并可以在主机上进行管理。或使用群模式,可以使用secret和config对象将秘密和配置作为文件注入到容器中。
  • 临时文件:按照其定义,它们是临时的,不应保存。您可以使用tmpfs挂载将它们存储在ram中。
  • 日志文件:这些文件应写入stdout / stderr,而不应写入容器。 Docker将使用您选择的日志驱动程序捕获这些流。为了保持持久性,应使用Elastic这样的工具将这些日志集中化。