You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何Docker容器即便重启也保留变更?未执行docker commit也默认持久化吗?

Docker容器变更持久化问题解答

问题1:即便不执行docker commit,容器的变更是否默认会在重启后持久化?

  • 默认规则下,容器的运行时变更存储在专属的可写层中,持久化逻辑如下:
    • 只要容器未被删除(仅执行docker stop/docker restart操作、Docker守护进程重启),可写层的内容会一直保留,变更会持久存在
    • 若执行docker rm删除容器,对应的可写层会被同步销毁,正常情况下变更不会残留
  • 你删除容器后重新启动仍能看到/tmp/test.log属于操作偏差导致:docker commit命令默认不会修改原基础镜像,你启动新容器时使用的镜像已经是包含变更的非原始ubuntu镜像,大概率是你操作时误将提交的镜像覆盖了本地的ubuntu标签,而非原基础镜像被修改。

问题2:如果这是默认行为,是否有功能可以关闭容器变更的持久化?

  • 有三种常用方案可以实现容器变更不持久化:
    1. 启动容器时添加--read-only参数,将容器的可写层设置为只读,所有运行时写入操作仅在临时文件系统中生效,容器停止/删除后所有变更直接清除,示例命令:
      docker run --read-only ubuntu
    2. 若容器需要写入特定目录(比如你的场景需要写/tmp),可以搭配--tmpfs参数给指定路径挂载临时内存文件系统,写入的内容不会落盘持久化,示例命令:
      docker run --read-only --tmpfs /tmp ubuntu
    3. 单次临时使用的容器可以添加--rm参数,容器停止运行后会自动删除,同步销毁可写层,不会残留任何变更,示例命令:
      docker run --rm ubuntu

内容的提问来源于stack exchange,提问作者Ashar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 04:54:03