docker容器迁移教程

前言

被领导要求部署一个和测试环境一样的演示环境,并且数据库也要同步过去,服务器上的各种服务都是docker部署的,由于之前docker玩的比较少,所以还是踩了不少坑的,在此记录一下正确的操作方法。

正文

1.容器镜像导出

  • 我们先通过docker images查看需要导出的镜像

镜像列表

  • 然后我们使用镜像导出命令
docker save -o /home/备份包名.tar 镜像id或镜像名

-o(即output) 或 > 表示输出到文件
备份镜像可以同时备份多个,空格分隔,这里建议使用镜像名备份,否则还原时会丢失镜像名
  • 例如我需要备份nginx镜像:
docker save -o /home/backup/back.tar nginx

备份完成之后可以在目录下查看到这个备份文件

2.备份文件迁移

  • 迁移文件可以使用u盘传输,当然用u盘转移时间显然很慢,我们何不直接在两台服务器之间进行传输?如果再局域网的情况下传输速度会非常快,这里我们使用scp指令去复制备份文件:
scp [参数] [原路径] [目标路径]

命令参数:
-p 保留原文件的修改时间,访问时间和访问权限
-q 不显示传输进度条
-r 递归复制整个目录。
-v 详细方式显示输出。
-P port 注意是大写的P, port是指定数据传输用到的端口号
  • 在我们需要迁移的目标机器上执行指令
#192.168.1.79是我们备份文件所在的服务器,我想把文件移动到本地home下
scp root@192.168.1.79:/home/back.tar /home/
  • 回车之后会提示是否输入密码,先yes然后输入密码,输入一下root密码即可,如果你是非root用户,可能要注意下文件权限问题

3.镜像备份文件读取

  • 使用docker load载入镜像
 docker load -i /home/back.tar
 #-i(即input)或<表示从文件输入;
  • 等待读条完毕,使用docker images查看是否导入成功,导入成功即可根据镜像创建容器并运行。

4.容器挂载目录的转移和配置

  • 如果在原服务器的容器中配置了挂载目录,可以用第2步的方法,将挂载目录转移至新服务器。
  • 可以使用以下命令查看挂载目录的映射关系
docker inspect 369a1376f78c | grep Mounts -A 50
#369a1376f78c为容器名称或id 该命令标识获取Mounts关键词后50行
  • 我们查看输出的Mounts数组中的挂载信息,我们可以在此查看挂载的目录和对应容器目录

image-20220617144032262

  • 在新服务器上启动容器时可以根据挂载信息添加-v参数,如果觉得重新写启动命令很麻烦,可以使用runlike把容器启动命令直接复制过去,方法如下

    • 安装pip工具包和runlike
    #安装pip3
    yum install python3
    yum install python3-pip
    #安装runlike
    pip3 install runlike
    
    • 使用该命令即可查看启动命令,非常方便
    runlike -p 容器名
    

参考文章:

docker导入导出镜像、容器,及启动容器失败解决方法

Linux服务器:服务器之间,实现局域网(内网)快速传输文件 - 云服务器网 (yuntue.com)

pip3 install runlike - 知乎 (zhihu.com)

原文地址: docker容器迁移教程 - Aunero’s Blog

  • 9
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值