docker 无直接 export 压缩命令,但可用 docker export | gzip > file.tar.gz 一键导出为压缩包;导出的是运行时合并文件系统快照,不含镜像层、元数据、卷及虚拟文件系统内容。

Docker 本身没有 docker export 命令直接生成压缩包(如 tar.gz),但可通过 docker export 输出为 tar 流,再配合管道压缩实现一键导出为压缩包。
使用 docker export + gzip 一步导出为 .tar.gz
docker export 默认输出是未压缩的 tar 流,可直接通过管道交给 gzip 生成压缩包:
- 基本命令(推荐):
docker export | gzip > container-rootfs.tar.gz - 例如导出名为
myapp的容器:
docker export myapp | gzip > myapp-export.tar.gz - 若需保留原始 tar 格式(不压缩),去掉
gzip > ...即可:
docker export myapp > myapp-rootfs.tar
导出时注意容器状态和内容范围
docker export 导出的是容器运行时的**合并文件系统快照**(即 container layer),不含镜像层、元数据、卷(volumes)或挂载点内容:
- 容器必须处于 运行中或已停止 状态(不能是已删除状态);
- 只包含容器启动后写入的文件(如日志、临时配置、应用生成数据),不包含镜像自带的只读层;
- 不会保存
/proc、/sys、/dev等虚拟文件系统内容(导出时自动过滤); - 如果容器使用了绑定挂载(bind mount)或命名卷,对应宿主机路径的内容不会被导出。
验证与解压导出的压缩包
导出完成后,可用标准工具检查和解压:
- 查看压缩包内文件列表:
tar -tzf container-rootfs.tar.gz | head -20 - 解压到当前目录(注意:会覆盖同名文件):
tar -xzf container-rootfs.tar.gz - 安全解压到指定子目录:
mkdir exported-rootfs && tar -xzf container-rootfs.tar.gz -C exported-rootfs
替代方案:用 docker commit + docker save(适用需保留镜像结构场景)
若你实际需要的是“带历史层和元数据”的镜像备份(而非纯文件系统快照),应改用:
- 先提交为新镜像:
docker commit my-exported-image:latest - 再保存为 tar 包(含所有层+JSON元数据):
docker save my-exported-image:latest | gzip > my-image.tar.gz - 该方式适合迁移、离线加载,但体积通常更大、结构更复杂。










