Docker镜像导出与导入应使用docker save/load而非export/import:save打包完整镜像(含层、元数据),load还原为本地可用镜像;export/import仅处理容器文件系统快照,丢失配置与运行时状态。

Docker 镜像导出与导入是离线迁移、环境备份和跨主机部署的核心操作,关键在于用对命令、理解差异、避开常见坑。
镜像导出:用 docker save 打包完整镜像docker save 会把镜像的所有层、元数据(如标签、历史记录、配置)完整打包成一个 .tar 文件。
- 导出单个镜像:
docker save -o nginx.tar nginx:latest
- 导出多个镜像(一次性打包):
docker save -o apps.tar nginx:alpine redis:7.2 myapp:v2.1
- 导出时可省略
-o,直接重定向(效果相同):docker save nginx:latest > nginx.tar
导出文件体积较大但结构完整,适合迁移、回滚或离线部署。
镜像导入:用 docker load 恢复本地镜像docker load 读取 .tar 文件,还原为本地可用的镜像,保留原有标签和镜像 ID。
- 基本导入:
docker load -i nginx.tar
- 也可从标准输入导入(适合管道场景):
cat nginx.tar | docker load
导入后运行
docker images即可验证,镜像状态与导出前一致,可直接docker run启动。
别把容器导出当成镜像导出docker export 和 docker import 处理的是容器文件系统快照,不是镜像:
-
docker export -o app.tar my-container:只保存当前容器的文件系统,不带层、不带元数据(无 ENV、PORT、CMD 等)。 -
docker import app.tar myimg:v1:生成一个全新镜像,需手动指定 CMD、EXPOSE 等,原容器运行配置全部丢失。
除非你只要数据目录或做轻量快照,否则迁移完整运行环境请坚持用save/load。
实用提醒
- 导出前确认镜像名和标签准确,
docker images查一下最稳妥。 - 大镜像导出耗时较长,建议在空闲时段操作;导入时确保磁盘空间充足。
- 离线环境导入后,记得检查基础依赖(如 CPU 架构是否匹配:amd64 vs arm64)。
- 不要依赖
docker export+docker import来“复制运行中的容器”,它无法还原网络、卷挂载、重启策略等运行时状态。


















