Docker 镜像导出导入完整指南

作者: xd99
日期: 2026-03-10

前言

在内网环境或网络受限场景下,无法直接从 Docker Hub 拉取镜像。本文介绍如何将 Docker 镜像导出为本地文件,传输到另一台机器后导入使用。


一、导出镜像(源机器)

1. 查看本地镜像

docker images | grep alpine/openclaw

输出示例:

alpine/openclaw   latest    abc123def456   2 weeks ago   156MB

2. 导出为 tar 文件

docker save -o openclaw.tar alpine/openclaw:latest

参数说明:

  • -o:output,指定输出文件名
  • alpine/openclaw:latest:要导出的镜像名称和标签

3. 验证文件

ls -lh openclaw.tar
# -rw-r--r-- 1 root root 156M Mar 10 10:00 openclaw.tar

4. 压缩减小体积(可选)

# 使用 gzip 压缩,体积可减少 30%-50%
docker save alpine/openclaw:latest | gzip > openclaw.tar.gz

ls -lh openclaw.tar.gz
# -rw-r--r-- 1 root root 89M Mar 10 10:01 openclaw.tar.gz

二、传输文件

根据实际情况选择传输方式:

方式 命令 适用场景
scp scp openclaw.tar root@192.168.1.100:/root/ 网络互通
rsync rsync -avz openclaw.tar root@目标IP:/root/ 大文件断点续传
物理介质 U盘/移动硬盘拷贝 完全离线环境

三、导入镜像(目标机器)

1. 加载镜像

docker load -i openclaw.tar

参数说明:

  • -i:input,指定输入文件

2. 验证导入

docker images | grep alpine/openclaw

输出:

alpine/openclaw   latest    abc123def456   2 weeks ago   156MB

3. 解压后导入(如果是压缩版)

gunzip -c openclaw.tar.gz | docker load

四、批量导出多个镜像

# 导出多个镜像到一个文件
docker save -o ai-tools.tar \
  alpine/openclaw:latest \
  nginx:latest \
  redis:latest

# 导入时会全部恢复
docker load -i ai-tools.tar

五、常见问题

Q1: save 和 export 有什么区别?

对比项 docker save docker export
导出对象 镜像 容器
包含元数据 ✅ 完整(历史层、标签) ❌ 仅文件系统
体积 较大 较小
推荐用途 镜像迁移分享 容器快照备份

Q2: 导入后镜像名称丢失?

使用 -o 导出的镜像会保留名称标签。如丢失,可手动打标签:

docker tag abc123def456 alpine/openclaw:latest

Q3: 如何查看 tar 文件内容?

# 不解压查看 tar 内镜像列表
tar -tf openclaw.tar | grep manifest.json

六、完整命令速查

场景 命令
导出单个镜像 docker save -o xxx.tar 镜像名:标签
导出多个镜像 docker save -o xxx.tar 镜像1 镜像2 镜像3
压缩导出 docker save 镜像 | gzip > xxx.tar.gz
导入镜像 docker load -i xxx.tar
压缩导入 gunzip -c xxx.tar.gz | docker load
验证导入 docker images | grep 镜像名

总结

通过 docker save/load 可以方便地在离线环境部署 Docker 应用,是内网环境分发镜像的最佳实践。配合压缩工具可显著减小传输体积,提高传输效率。


参考:

posted @ 2026-03-10 22:24  xd99  阅读(26)  评论(0)    收藏  举报