docker export 命令用于将运行中或已停止容器的文件系统导出为 tar 归档,不包含元数据、历史层或启动配置;仅保存根文件系统快照,需配合 docker import 创建新镜像,且导入后需手动指定 CMD。
docker export 命令用于将一个正在运行或已停止的容器的文件系统打包为一个 tar 归档文件(不包含镜像元数据、历史层或 dockerfile 信息),适合做轻量级备份或迁移,但不能直接用于重建镜像(如需重建镜像,应使用 docker commit + docker save)。
基本语法和常用用法
命令格式为:
docker export [OPTIONS] CONTAINER
最常用的是导出到本地文件:
- -o, --output:指定输出文件路径(推荐方式)
- 不加 -o 时,输出会直接写入标准输出,需配合重定向(如
> archive.tar)
✅ 正确示例:
docker export -o myapp-export.tar my-container
✅ 重定向方式(等效但易出错,不推荐):
docker export my-container > myapp-export.tar
导出前要注意的关键点
导出的是容器当前的**文件系统快照**,不是镜像。这意味着:
- 不会保留容器的启动命令(CMD/ENTRYPOINT)、环境变量、端口映射、卷挂载信息
- 不会包含镜像的分层结构或构建历史,无法用
docker load加载 - 容器可以是
running或exited状态,但不能是created(未启动过)状态 - 导出内容不含
/proc、/sys、/dev等虚拟文件系统(这些在容器运行时动态生成)
导出后如何使用这个 tar 文件
导出的 tar 文件本质是根文件系统归档,可用来:
-
提取查看内容:
tar -xf myapp-export.tar -C ./extracted-rootfs -
作为新镜像的基础层:用
cat myapp-export.tar | docker import - new-image:latest(注意:import 会创建新镜像,但丢失所有原容器配置) - 离线传输或审计文件系统:比如检查容器内是否残留敏感文件或配置
⚠️ 注意:docker import 创建的镜像默认没有 CMD,需手动指定启动命令,例如:
cat myapp-export.tar | docker import - myapp:from-export docker run -it --rm myapp:from-export /bin/sh
与 docker save / docker commit 的区别
别混淆这三个命令:
- docker export → 容器文件系统(tar,无元数据)→ 适合快速打包运行态文件
-
docker commit → 把容器保存为新镜像(含层、历史、部分配置)→ 可用于后续
docker save -
docker save → 把一个或多个镜像保存为 tar(含所有层和元数据)→ 可用
docker load恢复
简单记:export 是“容器快照”,save 是“镜像打包”,commit 是“从容器造镜像”。











