首页/云/Docker 容器速查/docker export 导出容器文件系统
基础命令50 条

docker export 导出容器文件系统

把容器根文件系统打包成 tar(默认输出到 stdout),得到扁平化快照;与 save 导出的镜像包不是一回事。

Docker 容器速查云更新于 2026-10-13

docker export 是什么

export 把容器的根文件系统打包成 tar 归档,默认写到标准输出。产物是扁平化的快照:只剩文件内容,分层信息、镜像配置、环境变量与启动命令都不在里面。它与 save 常被混淆——save 针对镜像并保留分层与标签,export 针对容器且丢掉这些元数据。要恢复成镜像,需要用 import。

基本信息

语法docker export [-o 文件] 容器
输出tar 归档,默认输出到标准输出可配合 gzip
包含内容容器可写层与镜像层合并后的根文件系统
不包含分层历史、镜像配置、标签、环境变量
不包含卷挂载卷中的内容不在归档内
还原方式docker import 导入为可运行镜像

典型使用场景

  • 迁移旧式根文件系统:把运行已久的容器整体打包带走到新环境
  • 取回容器内产物:需要整个文件系统而不是单个文件时
  • 救援场景:容器已经起不来,先导出内容再做分析
  • 制作基础根文件系统给其他构建流程使用
  • 与 save 对比验证:确认镜像分层之外多出哪些运行期改动

导出与还原

导出与还原
# 导出为文件,注意文件体积可能远大于同镜像的 save 产物
docker export web -o web-rootfs.tar

# 管道压缩,减少传输体积
docker export web | gzip > web-rootfs.tar.gz

# 排除明显不需要的目录:先导出再按需裁剪
docker export web -o web-rootfs.tar
# tar --delete -f web-rootfs.tar -C . var/cache

# 还原为镜像并补上启动配置(import 支持 --change 追加指令)
docker import --change 'CMD ["nginx","-g","daemon off;"]' web-rootfs.tar app/web:imported
docker run --rm app/web:imported nginx -v

export 与 save 对比

维度docker exportdocker save
对象容器镜像
分层与历史压平为单层完整保留
标签与配置丢失保留
还原命令docker importdocker load
卷数据不含不含
典型用途根文件系统迁移镜像分发与备份
导出的归档不能直接 docker run:必须先用 import 变成镜像,并在导入时补齐启动命令、端口与用户等配置,否则容器可能启动即退出。
export 不包含卷里的数据,用整机迁移的思路操作时最容易漏掉数据库目录,恢复后才发现服务有程序没数据。

易错点

  • 用它迁移整机时容易漏掉卷数据与运行配置,目标机上必须单独还原卷并重新补齐启动参数
  • 把 export 产物当镜像分发,接收方 load 会直接失败,必须先 import 成镜像
  • 导出的归档里包含容器运行期间的日志与缓存,交付前需要清理以免体积膨胀与泄露信息
  • 误以为 export 能保留环境变量与用户设置,实际这些配置全在镜像元数据里,导入后需要重新声明

数据来源与参考

  • Docker 官方 CLI 参考:docker export(docs.docker.com)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌