当前位置: 首页 > news >正文

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.gzls -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 应用,是内网环境分发镜像的最佳实践。配合压缩工具可显著减小传输体积,提高传输效率。


参考:

  • Docker 官方文档:https://docs.docker.com/engine/reference/commandline/save/
http://www.jsqmd.com/news/459965/

相关文章:

  • 实战演练:使用Hydra对SSH服务进行字典爆破与防御思考
  • 如何选择最佳优化器提升Kornia几何视觉训练效率:2024终极指南
  • 原圈科技AI CRM系统:引爆2026文旅90%转化,不懂将被淘汰!
  • uniapp中动态控制swiper滑动的三种实用方案
  • 利用ChIPseeker实现ChIP-seq数据的多维度可视化分析
  • Self Attention
  • AnimateDiff终极指南:如何用AI技术创造惊艳的增强现实内容
  • Windows平台深度指南:从源码编译OpenSSL 1.1.1w的完整实践与优化
  • Synergy/Barrier跨平台键鼠共享:从连接失败到稳定联通的排查指南
  • FPGA按键消抖实战:从状态机设计到Verilog代码实现(附仿真波形)
  • 2025年nvim-treesitter用户调查报告:10大最受欢迎功能揭秘
  • 【Spring】三级缓存与循环依赖:面试高频考点全解析
  • 智能视觉组竞赛全解析:从车模设计到OpenART mini视觉识别实战
  • Matlab坐标轴刻度科学计数法:10的次方显示优化技巧
  • DXVK信号量超时处理终极指南:彻底避免死锁问题
  • 强化学习基本概念
  • 【Vocoder】HiFi-GAN:高效高保真语音合成的GAN架构解析
  • 编辑器使用规则
  • libSQL性能测试终极指南:从压力测试到基准对比的完整实践方案
  • uniapp:鸿蒙报错> hvigor ERROR: Failed :entry:default@MergeProfile... > hvigor ERROR: The compatibleSdkVe
  • 深入理解Python Web框架:gh_mirrors/we/web_develop项目中的Flask应用案例
  • 第二周周二 - f
  • 终极代码质量检查指南:如何使用avante.nvim提升开发效率
  • 9篇7章17节:特殊的NHANES数据解读,包括NNYFS、NHEFS、NHES 和 HHANES 等数据
  • 如何使用nsync实现高效互斥锁(mutex):C语言并发编程实战指南
  • Quarkus缓存策略终极指南:Infinispan分布式缓存集成与实战
  • uniapp安卓苹果APP端:解决安卓/苹果IOS获取蓝牙ID不一致问题,获取到的deviceId不一致?uniapp蓝牙设备ios与安卓端deviceId不一致问题(ios和安卓的获取方式不一样)
  • 如何使用 JetBrains Mono 字体优化哈萨克语西里尔字符编码体验:开发者必备的免费等宽字体指南
  • 如何安全配置Thread脚本:保护你的京东账户与隐私指南
  • 如何利用Quarkus虚拟线程提升Java应用性能:Project Loom完整指南