【Docker】迁移镜像:save和load(保存/加载镜像),export和import(导出容器/导入镜像)

Docker 中,可以使用 导出(export/import)保存(save/load) 两种方式来迁移镜像。它们的区别如下:

方法适用场景主要作用是否包含历史层
docker save / docker load备份和共享完整镜像包含所有历史层和元数据✅ 是
docker export / docker import备份和传输运行中的容器只包含最终文件系统❌ 否

📌 方法 1:使用 saveload 导出/导入镜像(推荐)

如果你需要备份、迁移或共享 完整的 Docker 镜像(包括历史层),请使用 docker savedocker load

1️⃣ 导出镜像

使用 docker save 将 Docker 镜像保存为 .tar 文件:

docker save -o myimage.tar myimage:latest

或者:

docker save myimage:latest > myimage.tar

这里:

  • -o myimage.tar 指定导出的文件名
  • myimage:latest 是要导出的镜像名称(可以带 :tag

2️⃣ 传输文件

你可以用 scprsyncmyimage.tar 复制到另一台服务器:

scp myimage.tar user@remote-server:/path/to/destination/

3️⃣ 导入镜像

在目标服务器上,使用 docker load 重新导入镜像:

docker load -i myimage.tar

或者:

cat myimage.tar | docker load

4️⃣ 验证镜像

导入完成后,运行以下命令确认镜像是否成功加载:

docker images

如果列表中包含 myimage:latest,则说明导入成功。


📌 方法 2:使用 exportimport 迁移容器

如果你需要备份 已运行的容器(但不包括历史层),请使用 docker exportdocker import

1️⃣ 导出运行中的容器

首先,找到容器 ID:

docker ps -a

然后使用 docker export 导出容器:

docker export -o mycontainer.tar <CONTAINER_ID>

或者:

docker export <CONTAINER_ID> > mycontainer.tar

2️⃣ 传输文件

同样,你可以使用 scp 传输文件:

scp mycontainer.tar user@remote-server:/path/to/destination/

3️⃣ 在目标机器上导入

使用 docker import 创建一个新的镜像:

docker import mycontainer.tar mynewimage:latest

如果你希望带有作者信息:

cat mycontainer.tar | docker import - mynewimage:latest

4️⃣ 验证

导入后,查看新镜像:

docker images

然后可以用 docker run 运行它:

docker run -it mynewimage:latest /bin/bash

📌 主要区别总结

方式适用场景是否保留历史层是否包含元数据是否包含环境变量
docker save/load完整镜像备份✅ 是✅ 是✅ 是
docker export/import容器文件系统备份❌ 否❌ 否❌ 否

一般情况下,推荐使用 save/load 方式,因为它可以保留所有的 Docker 层和元数据,而 export/import 方式更适合仅迁移容器的最终状态。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

彬彬侠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值