docker load用于从docker save生成的.tar或.tar.gz归档文件中加载镜像,完整还原分层结构、标签和元数据;常用命令为docker load -i image.tar或cat image.tar | docker load,加载后需通过docker images、docker inspect和docker run验证镜像存在性、层完整性及可运行性。

直接用 docker load 就能把本地的 .tar 或 .tar.gz 镜像文件加载进 Docker 环境,它会完整还原镜像的分层结构、标签和元数据。关键不是“怎么输命令”,而是清楚什么时候该用它、文件从哪来、加载后怎么确认成功。
怎么加载一个镜像文件
最常用的方式是用 -i 参数指定路径:
docker load -i nginx_backup.tar-
docker load -i app-image.tar.gz(支持压缩包,Docker 自动解压) - 也可以用管道:
cat myapp.tar | docker load
注意:docker load 不接受镜像名作为参数,只认归档文件;文件必须是用 docker save 导出的格式,不能是随便打包的目录或容器导出文件。
导入前要准备什么
镜像文件通常来自另一台机器或本地备份,得先有它:
- 在源机器上保存:
docker save -o redis-v7.2.tar redis:7.2 - 或者保存多个镜像到一个包:
docker save -o multi.tar nginx:alpine redis:7.2 alpine:latest - 传输到目标机器(如用
scp、U盘、HTTP 下载等) - 确保文件没损坏——传输后建议校验
sha256sum,否则加载会失败报错
加载后怎么验证是否成功
别只看命令没报错就以为完事了,得检查三件事:
- 列出镜像:
docker images | grep redis—— 应该看到原标签(比如redis:7.2) - 查镜像详情:
docker inspect $(docker images -q redis:7.2)—— 能看到多层Layers,说明分层结构保留完好 - 跑一下测试:
docker run --rm redis:7.2 redis-cli --version—— 容器能正常启动并执行命令才算真正可用
load 和 import 别混用
这两个命令看着都是“导入”,但完全不是一回事:
-
docker load:专用于docker save生成的 tar 包,保留所有层、历史、标签 -
docker import:读的是容器文件系统快照(比如docker export输出),结果是单层镜像,没有构建历史,也不带原始标签 - 想迁移已有镜像 → 用
save + load;想把某个运行过的容器状态固化成基础镜像 → 才考虑export + import


















