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

标签 docker

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

  • 反复重启
  • 部分错误

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

    最佳答案

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

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

  • 资料 :任何持久性数据都应该保存在一个卷中。
  • 应用程序代码和依赖项 :这些应该存储在镜像本身中,使用 Dockerfile 构建,并将容器替换为从新镜像运行的新容器。
  • 配置文件 :这些可以作为单个文件卷安装,只读,并在主机上进行管理。或者使用 swarm 模式,可以使用 secret 和 config 对象将 secret 和配置作为文件注入(inject)容器中。
  • 临时文件 : 根据他们的定义是暂时的,不应该被保存。您可以使用 tmpfs mount 将它们存储在 ram 中。
  • 日志文件 :这些应该写入标准输出/标准错误,而不是写入容器。 Docker 将使用您选择的日志驱动程序捕获这些流。对于持久性,这些日志应该使用 Elastic 之类的工具进行集中处理。
  • 关于docker - 为什么Docker容器退出时不保存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57240279/

    相关文章:

    docker - Ubuntu 18.04 - 来自守护进程 : Get https://registry-1. docker.io/v2/的错误响应:proxyconnect tcp:tls:收到长度为 20527 的超大记录

    连接到 docker daemon 的 shell 脚本

    docker - 无法在Docker上连接localhost Evebox

    python - 为什么 conda install tk 在我的 docker 容器中不起作用,即使它说已安装?

    docker - 如何从Docker注册表设置自动部署到Kubernetes

    从1.2升级到1.3并在Docker容器中部署时,Meteorpackages.json错误解决方法

    http - 由未知授权机构签名的x509证书-Go-pingdom

    docker - Traefik 2.0和docker简单配置无法正常工作

    docker - 如何在 Raspberry Pi 上安装 docker 时提及特定版本

    amazon-web-services - .ebextensions 在 elasticbeanstalk 上使用 Docker