1、需求
将公司主服务器上的docker容器整个迁移至另外一台备份服务器上,包含数据与配置。主服务器总共装了20多个容器,如果每个使用commit打包成镜像,非常耗时耗力,所以想出这个方案。
2、迁移方案
- 使用
rsync
命令直接将docker的根目录复制到备份服务器上 - 在备份服务器上安装一个docker,修改配置文件与主服务器相同,使之能读到迁移过来的的根目录
- 重启备份服务器的docker容器
3、实战
3.1 第一步
关闭备份服务器的防火墙
systemctl stop firewalld && systemctl disable firewalld && systemctl status firewalld
3.2 第二步
找到主服务器的docker根目录,使用rsync
命令同步到备份服务器
rsync -az --delete /home/dockerlib/ 192.168.0.100:/home/dockerlib/
-az #归档压缩传输
--delete #删除那些目标位置有,而原始位置没有的文件
/home/dockerlib/ #我的docker服务根目录
192.168.0.100 #备份服务器的IP
/home/dockerlib/ #复制到备份服务器的/home目录下
3.3 第三步
在备份服务器上安装docker
yum install -y yum-utils device-mapper-persistent-data lvm2 \
&& yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo\
&& yum makecache fast \
&& yum -y install docker-ce \
修改配置文件/etc/docker/daemon.json
{
"data-root":"/home/dockerlib",
"registry-mirrors": ["https://1e7waog4.mirror.aliyuncs.com"],
"insecure-registries":["192.168.0.20:5000"]
}
data-root #docker的根目录
registry-mirrors #镜像仓库加速地址
insecure-registries #私有镜像仓库地址
然后重启docker服务
systemctl restart docker && systemctl enable docker