Docker 镜像导出与导入:export/import vs save/load

在使用 Docker 时,我们经常会遇到需要将镜像从一台机器迁移到另一台机器的情况。虽然可以通过 Docker Hub 或其他镜像仓库来实现,但有时出于安全或网络限制,我们需要将镜像保存为本地文件,然后手动拷贝到目标机器上进行导入。Docker 提供了两种主要的镜像导出与导入方式:export/importsave/load。本文将详细介绍这两种方式的使用方法、区别以及适用场景。

一、使用 exportimport

1.1 查看本机的容器

exportimport 是通过容器来导出和导入镜像的。首先,我们需要查看本机上所有容器的列表:

bash 复制代码
docker ps -a

1.2 导出镜像

使用 docker export 命令可以根据容器 ID 将镜像导出为一个文件。例如:

bash 复制代码
docker export f299f501774c > hangger_server.tar

执行该命令后,镜像文件 hangger_server.tar 将被保存到当前目录。

1.3 导入镜像

使用 docker import 命令可以将导出的镜像文件导入到本地镜像库中。例如:

bash 复制代码
docker import - new_hangger_server < hangger_server.tar

执行 docker images 命令可以确认镜像已经成功导入。

二、使用 saveload

2.1 查看本机的镜像

saveload 是通过镜像来保存和加载镜像文件的。首先,我们需要查看本机上所有镜像的列表:

bash 复制代码
docker images

2.2 保存镜像

使用 docker save 命令可以根据镜像 ID 将镜像保存为一个文件。例如:

bash 复制代码
docker save 0fdf2b4c26d3 > hangge_server.tar

此外,我们还可以将多个镜像打包到一个文件中:

bash 复制代码
docker save -o images.tar postgres:9.6 mongo:3.4

2.3 载入镜像

使用 docker load 命令可以将保存的镜像文件载入到本地镜像库中。例如:

bash 复制代码
docker load < hangge_server.tar

三、两种方案的差别

3.1 文件大小

  • export 导出的镜像文件体积通常小于 save 保存的镜像文件。

3.2 是否可以对镜像重命名

  • docker import 可以为镜像指定新的名称。
  • docker load 不能对载入的镜像重命名。

3.3 是否可以同时将多个镜像打包到一个文件中

  • docker export 不支持将多个镜像打包到一个文件中。
  • docker save 支持将多个镜像打包到一个文件中。

3.4 是否包含镜像历史

  • export 导出(import 导入)的镜像是根据容器的当前状态生成的,会丢失镜像的所有历史记录和元数据信息,因此无法进行回滚操作。
  • save 保存(load 加载)的镜像保留了镜像的完整历史记录,可以回滚到之前的层(layer)。

3.5 适用场景

  • docker export 的适用场景
    • 主要用于制作基础镜像。例如,从一个基础镜像(如 Ubuntu)启动一个容器,安装一些软件并进行配置后,使用 docker export 保存为一个基础镜像,然后分发给其他人使用。
  • docker save 的适用场景
    • 适用于需要将多个镜像打包并迁移到其他机器的情况。例如,在使用 docker-compose 编排多个镜像时,可以将所有相关镜像打包成一个文件,然后在目标机器上使用 docker load 载入。

四、总结

Docker 提供了两种镜像导出与导入的方式:export/importsave/loadexport/import 适用于制作基础镜像,而 save/load 适用于迁移包含多个镜像的应用。在选择使用哪种方式时,需要根据具体需求考虑文件大小、是否需要保留镜像历史等因素。

希望本文对你有所帮助!如果还有其他问题,欢迎留言交流。


原文链接Docker - 实现本地镜像的导出、导入(export、import、save、load)

相关推荐
架构师老Y4 小时前
008、容器化部署:Docker与Python应用打包
python·容器·架构
特长腿特长4 小时前
centos、ubantu系列机的用户和用户组的结构是什么?具体怎么配置?用户组权限怎么使用?这篇文章持续更新,帮助你复习linux的基础知识
linux·运维·centos
zzzyyy5384 小时前
Linux环境变量
linux·运维·服务器
赛博云推-Twitter热门霸屏工具5 小时前
Twitter运营完整流程:从0到引流获客全流程拆解(2026)
运维·安全·自动化·媒体·twitter
CHHC18805 小时前
NetCore树莓派桌面应用程序
linux·运维·服务器
帮我吧智能服务平台6 小时前
装备制造智能制造升级:远程运维与智能服务如何保障产线OEE
运维·服务器·制造
w6100104666 小时前
cka-2026-cri-dockerd
运维·k8s·cka
卤炖阑尾炎7 小时前
PostgreSQL 日常运维全指南:从基础操作到备份恢复
运维·数据库·postgresql
handsomestWei7 小时前
Docker引擎API接入配置
运维·http·docker·容器·api
Tingjct8 小时前
Linux常用指令
linux·运维·服务器