【docker】容器跨服务器的迁移的方法export&save

时间:2024-03-23 11:39:32

目录

场景

怎么做?

实战

export

save

区别

注意事项

推荐


场景

项目针对一家传统企业,服务器环境采用docker配置。企业的网络管理非常严格,对服务器对外的带宽也有限制,使用下载镜像images非常慢。想必使用docker部署环境都是常有docker pull去拉镜像,但是镜像有小有大,大的就不敢恭维了,迫于网络环境的影响,就发起了一个疑问,能不能通过安装包的形式装在images?

答案是肯定的,docker已经为我们考虑到了。

 

怎么做?

这里的基本步骤就是

1、将一台服务器的镜像或者容器打包成文件

2、上传至需要安装环境的服务器,通过存储介质或者FTP 还可以通过scp传输

例如scp mysql.tar.gz [email protected]:/backup/

【docker】容器跨服务器的迁移的方法export&save

3、装在docker打包的文件

经过以上步骤,镜像文件就可以通过docker images看到了

文中我会以mysql8进行举例

 

实战

docker的备份方式有export和save两种。

export是当前的状态,针对的是容器,docker save 是针对镜像images。

 

export

  1. docker ps 查看容器 查看哪个容器需要备份【docker】容器跨服务器的迁移的方法export&save
  2. docker export 58ad41c4b855 >/lfback/mysql8.tar    "lfback是我备份的路径,必须先创建,或者先进入这个目录"
  3. du -sh mysql8.tar  "查看备份文件" 
    【docker】容器跨服务器的迁移的方法export&save
  4. 将备份文件传送到指定的服务器上
  5. cat mysql8.tar | docker import - mysql:8.0.13 "恢复备份"

 

save

  1. docker images "查看需要备份的镜像"
  2. docker save c0031e8d29df >mysql8.tar "备份mysql8镜像 docker save [imageId] >[备份文件名]
  3. 将备份文件传送到指定的服务器上
  4. docker load <mysql8.tar "加载备份"
  5. docker images "查看镜像列表"【docker】容器跨服务器的迁移的方法export&save

 

区别

导出后再导入(exported-imported)的镜像会丢失所有的历史,而保存后再加载(saveed-loaded)的镜像没有丢失历史和层 (layer)。这意味着使用导出后再导入的方式,你将无法回滚到之前的层(layer),同时,使用保存后再加载的方式持久化整个镜像,就可以做到层回 滚(可以执行docker tag <LAYER ID> <IMAGE NAME>来回滚之前的层)。

 

注意事项

推荐

【docker】Docker可视化工具Portainer