必须用 docker export 命令导出运行中或已停止容器的完整文件系统快照,支持 -o 选项直接写入文件,导出后需验证文件大小、内容列表及解压完整性。

要把正在运行的 Docker 容器当前状态下的完整文件系统打包成一个可迁移、可解压的 tar 归档,必须用 docker export 命令——它专为活体或已停止容器设计,不依赖镜像层,只抓取容器最上层的读写文件快照。
确认目标容器并导出为 tar 文件
执行 docker ps -a 查看所有容器,找到你要导出的容器名称或 ID,比如 my-app-running。
运行命令:docker export my-app-running > app-fs.tar。这会把容器当前内存+磁盘的全部文件系统输出到标准流,重定向进本地文件。
导出过程是即时快照,【容器必须处于运行中或已停止状态,但不能处于 paused 状态】;如果容器被 pause,export 会卡住或失败。
使用 -o 选项直接写入文件(推荐)
方法一:用 --output 参数避免 shell 重定向歧义,尤其当路径含空格或特殊字符时更安全。
docker export -o ./backups/app-live-20260929.tar my-app-running
方法二:省略 --output 简写为 -o,效果相同,命令更紧凑。
这一步操作起来很简单,直接把文件拖进去就行——但注意路径权限:如果目标目录不存在或无写入权,命令会静默失败,终端不报错,只生成 0 字节文件。
验证导出结果是否可用
第一步:检查 tar 文件大小是否合理,运行 ls -lh app-fs.tar,若显示 0 字节说明导出失败。
第二步:列出归档内容,确认有实际文件结构:tar -tf app-fs.tar | head -n 10。正常应看到类似 bin/、etc/hostname、usr/src/app/config.json 这样的路径。
第三步:临时解压到空目录验证完整性:mkdir -p /tmp/test-unpack && tar -xf app-fs.tar -C /tmp/test-unpack && ls /tmp/test-unpack。
如果 tar -tf 报错 “Cannot open: No such file or directory”,说明文件名拼写错误或路径没写对;如果解压后目录为空,大概率是容器本身根目录下没写入任何数据——export 不会报错,它只忠实导出实际存在的文件系统内容。











