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

Docker运行KLEE时退出后文件丢失问题求助

解决KLEE Docker容器内文件丢失问题

问题根源

Docker容器默认使用临时文件系统,除非配置了持久化存储,否则容器退出后,所有在容器内创建的文件、目录都会随容器的临时层一起消失——尤其是启动容器时用了--rm参数的话,容器会在退出后直接被删除,文件自然无法保留。

可行解决方案

1. 本地目录绑定挂载(最推荐)

启动KLEE容器时,将本地机器的一个目录挂载到容器内部,容器内该目录下的所有操作都会同步到本地磁盘,彻底避免文件丢失。

示例命令:

# 把本地~/klee_projects目录挂载到容器内的/klee_workspace
docker run -it -v ~/klee_projects:/klee_workspace klee/klee

之后你在容器内的/klee_workspace下创建的C程序、目录,都会直接保存在本地的~/klee_projects里。下次启动容器时挂载同一个目录,就能继续使用之前的文件。

2. 提交容器修改为自定义镜像

如果已经在容器内做了修改,不想用挂载,可以把当前容器的状态打包成新镜像,后续基于这个镜像启动容器,修改会被保留:

  • 退出容器后,用docker ps -a找到目标容器的ID或名称
  • 执行提交命令:
docker commit <容器ID或名称> my-custom-klee
  • 之后用自定义镜像启动容器:
docker run -it my-custom-klee

这种方法适合需要保留容器内配置的场景,但每次修改后都要重新提交,灵活性不如挂载。

3. 保留容器实例(避免自动删除)

如果之前启动容器时加了--rm参数(容器退出即删除),下次启动时去掉该参数,并指定容器名称:

docker run -it --name my-klee-session klee/klee

退出容器后,容器不会被删除,后续可以用以下命令重新进入:

docker start -i my-klee-session

注意:如果手动删除了这个容器,里面的文件还是会丢失,所以这种方法不如挂载可靠。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 20:35:26