前言
被领导要求部署一个和测试环境一样的演示环境,并且数据库也要同步过去,服务器上的各种服务都是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数组中的挂载信息,我们可以在此查看挂载的目录和对应容器目录
-
在新服务器上启动容器时可以根据挂载信息添加-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)文章来源:https://www.toymoban.com/news/detail-460732.html
原文地址: docker容器迁移教程 - Aunero’s Blog文章来源地址https://www.toymoban.com/news/detail-460732.html
到了这里,关于docker容器迁移教程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!