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数组中的挂载信息,我们可以在此查看挂载的目录和对应容器目录
启动容器方式:
A:在新服务器上启动容器时可以根据挂载信息添加-v参数,如果觉得重新写启动命令很麻烦,可以使用runlike把容器启动命令直接复制过去,方法如下
安装pip工具包和runlike
#安装pip3
yum install python3
yum install python3-pip
#安装runlike
pip3 install runlike
B:A方式获取的命令长度较为复杂,如果知道启动命令,直接执行docker run 相关参数即可