0

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

  • 反复重启
  • 部分错误

对于像我这样的新手来说,关于容器“退出”时的这种行为,这个SO 问题可能是最受欢迎的答案之一。但是,它并没有解释原因。

4

1 回答 1

2

如果您正确运行容器,则容器内没有您想要保留的内容。应该注意的是,只有 tmpfs 挂载会在容器退出时被删除。当容器被删除时,对容器文件系统的其他更改也会被删除。通过用新实例替换容器,回到初始图像状态,我们强制更改进入构建图像的代码并删除状态漂移的管理。

查看可能丢失的各种类型的内容,您应该在此处保存这些更改:

  • 数据:任何持久数据都应该保存在一个卷中。
  • 应用程序代码和依赖项:这些应该存储在镜像本身中,使用 Dockerfile 构建,并将容器替换为从新镜像运行的新容器。
  • 配置文件:这些可以作为单个文件卷安装,只读,并在主机上管理。或者使用 swarm 模式,可以使用 secret 和 config 对象将机密和配置作为文件注入容器中。
  • 临时文件:根据他们的定义是临时的,不应该保存。您可以使用 tmpfs mount 将它们存储在 ram 中。
  • 日志文件:这些应该被写入标准输出/标准错误,而不是容器。Docker 将使用您选择的日志驱动程序捕获这些流。对于持久性,这些日志应该使用 Elastic 之类的工具进行集中处理。
于 2019-07-28T11:28:42.530 回答