Docker 容器的跨服务器迁移是一个常见的需求,尤其是在微服务架构和持续集成/持续部署(CI/CD)的环境中。Docker 提供了两种主要的备份方式:
docker export
和docker save
。本文将详细介绍这两种方法的使用方法、区别以及适用场景。
Docker export:容器状态的备份与恢复※
备份步骤※
查找容器ID: 使用 docker ps -a
命令列出所有容器,并找到需要备份的容器ID。
执行备份: 通过 docker export
命令将容器的状态导出到一个tar文件中。
docker
export
<
container_id
>
>
<
backup_file.tar
>
验证备份文件: 使用 du -sh
命令检查备份文件的大小。
恢复步骤※
传输备份文件: 将备份文件传输到目标服务器。
执行恢复: 使用 docker import
命令将tar文件导入为一个新的镜像。
cat
<
backup_file.tar
>
|
docker
import
-
<
new_image_name
>
查看新生成的镜像: 使用 docker images
命令查看新生成的镜像。
Docker save:镜像的备份与恢复※
备份步骤※
获取镜像名称: 使用 docker images
命令列出所有镜像,并找到需要备份的镜像。
执行备份: 通过 docker save
命令将镜像保存到一个tar文件中。
docker
save
<
image_name
>
>
<
backup_file.tar
>
恢复步骤※
执行恢复: 使用 docker load
命令加载tar文件中的镜像。
docker
load
<
<
backup_file.tar
>
查看恢复的镜像: 使用 docker images
命令查看恢复的镜像。
两者的区别※
- 历史和层信息:使用
docker export
导出的镜像在导入时会丢失所有历史和层信息,而docker save
则能够保留这些信息。 - 回滚能力:使用
docker save
保存的镜像可以执行层回滚,而docker export
则无法实现这一点。
结论※
选择 docker export
还是 docker save
取决于你的具体需求。如果你需要迁移容器的当前状态,并且不需要保留历史或层信息,docker export
是一个不错的选择。如果你需要保留镜像的完整性,包括历史和层信息,以便进行版本控制或回滚,那么 docker save
更为合适。
附录※
- 命令参考:
docker ps -a
:列出所有容器。docker export
:导出容器状态。docker import
:从tar文件导入容器状态。docker images
:列出所有镜像。docker save
:保存镜像。docker load
:加载镜像。