Docker 镜像与容器的备份迁移

参:https://cloud.tencent.com/developer/article/2027894

Docker镜像与容器的备份迁移

容器迁移直接看最后的案例的方式。推荐使用 commit 构建新镜像,导出后迁移。

 用户既可以使用 docker load 来导入镜像存储文件到本地镜像库,也可以使用 docker import 来导入一个容器快照到本地镜像库。这两者的区别在于容器快照文件将丢弃所有的历史记录和元数据信息(即仅保存容器当时的快照状态),而镜像存储文件将保存完整记录,体积也要大。此外,从容器快照文件导入时可以重新指定标签等元数据信息。

save、export 和 commit 的区别

docker save是用来保存镜像的

  • 用途:用于将一个或多个 Docker 镜像保存到一个压缩的 tar 文件中。
  • 特点:保存的 tar 文件包含镜像的所有层、标签、元数据和历史记录,这允许在不同 Docker 环境之间完整地迁移和还原镜像。
  • 场景:适用于在不同 Docker 环境之间共享和迁移镜像,或在无网络连接的环境中部署镜像。

docker export是用来导出容器文件系统的

  • 用途:用于将 Docker 容器(无论是运行中还是已停止的)的文件系统导出为一个 tar 存档文件。
  • 特点:导出的 tar 文件不包含容器的历史记录和元数据,只包含文件系统状态,这使得导出的文件更为紧凑但功能有所损失。
  • 场景:适用于备份或迁移容器的当前状态,但不需要保留完整的容器历史或元数据。

docker commit是用来根据容器的当前状态创建新镜像的

  • 用途:基于正在运行的容器的当前状态创建一个新的 Docker 镜像。
  • 特点:允许捕获容器所做的更改,并保存为一个新的镜像,包括容器的历史记录和元数据。
  • 场景:当对容器进行了修改(如安装软件、更改配置等)后,并希望保存这些更改以便将来创建相同状态的容器或共享该状态时,非常有用。

容器迁移(export/import)

应用场景:

 主要用来制作基础镜像,比如从一个 ubuntu 镜像启动一个容器,然后安装一些软件和进行一些设置后,使用docker export 保存为一个基础镜像。然后,把这个镜像分发给其他人使用,如作为基础的开发环境。

注意

  1. 它只会导出文件系统;会丢失历史记录和元数据,如映射端口、CMD 和 ENTRYPOINT 配置。数据卷也不会包含在导出归档中。
  2. 启动export与import命令导出导入的镜像必须加/bin/bash或者其他/bin/sh,否则会报错。
# 导出(export):导出容器会丢失历史记录和元数据,类似快照
docker export [container ID or NAMES] > xx.tar	# 将导出容器快照到本地文件(.tar)

# 导入(import)
docker import xx.tar [REPOSITORY:TAG]
案例:

 通过 export 命令也可以将容器里的数据保存,并可以迁移到别的docker主机。

# 创建容器 web
[root@localhost ~]# docker run -itd --name web nginx
9a17f7c9f00a3711018581a1523ecd7a06c40d1408ae5678e034be1a1e4e0cd8

# 新增数据
[root@localhost ~]# docker exec -it web touch /mnt/test.txt
[root@localhost ~]# docker exec -it web ls /mnt/
test.txt

# 导出容器快照
[root@localhost ~]# docker export web > web.tar
[root@localhost ~]# docker import web.tar web:v
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

CodeStarNote

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

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

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

打赏作者

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

抵扣说明:

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

余额充值