docker迁移测试

docker 迁移测试

参考: https://blog.csdn.net/u014389734/article/details/115265963 参考:https://www.linuxprobe.com/docker-migrate.html

参考:https://developer.aliyun.com/article/785312

参考: https://developer.aliyun.com/article/38848:https://blog.csdn.net/weixin_48192495/article/details/109967094

需要考虑以下几点: 容器备份,还是容器制作成镜像后备份;以及对应的还原操作。 数据卷备份与还原。 网络重建。

测试机说明

192.168.1.1 centos stream 8 平时主要做软路由,之前一些docker 服务直接放到了这里。 192.168.1.7 archlinux 个人主机,打算把重负载的docker迁移到这里。

迁移整个Docker容器

最直接的想法是,如果可以直接拷贝整个docker文件夹就好了。

此方法包括将整个docker目录(“/var/lib/docker”)复制到新服务器。为了使这种方法成功,需要确定几个关键点。

  • 保留文件夹的权限和所有权。
  • 迁移前停止Docker服务。
  • 验证两台服务器中的Docker版本是否兼容。
  • 迁移前后验证容器列表和功能。
  • 环境变量和其他配置文件的路径。

如果此方法由于任何故障而无法工作,我们将配置自定义脚本以将容器和镜像从一台服务器迁移到另一台服务器。

先比较一下两台机子上docker版本

# 192.168.1.1
[root@localhost ~]# docker version
Client: Docker Engine - Community
 Version:           23.0.1
 API version:       1.42
 Go version:        go1.19.5
 Git commit:        a5ee5b1
 Built:             Thu Feb  9 19:49:07 2023
 OS/Arch:           linux/amd64
 Context:           default

Server: Docker Engine - Community
 Engine:
  Version:          23.0.1
  API version:      1.42 (minimum version 1.12)
  Go version:       go1.19.5
  Git commit:       bc3805a
  Built:            Thu Feb  9 19:46:47 2023
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.6.18
  GitCommit:        2456e983eb9e37e47538f59ea18f2043c9a73640
 runc:
  Version:          1.1.4
  GitCommit:        v1.1.4-0-g5fd4c4d
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0



[root@archlinux ~]# docker version
Client:
 Version:           23.0.1
 API version:       1.42
 Go version:        go1.20
 Git commit:        a5ee5b1dfc
 Built:             Sat Feb 11 13:58:04 2023
 OS/Arch:           linux/amd64
 Context:           default

Server:
 Engine:
  Version:          23.0.1
  API version:      1.42 (minimum version 1.12)
  Go version:       go1.20
  Git commit:       bc3805a0a0
  Built:            Sat Feb 11 13:58:04 2023
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          v1.6.16
  GitCommit:        31aa4358a36870b21a992d3ad2bef29e1d693bec.m
 runc:
  Version:          1.1.4
  GitCommit:        
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

可以看到版本恰好相同。但是注意linux发行版不通嗷。试下吧。

192.168.1.7上先备份/var/lib/docker文件夹

[root@archlinux ~]# systemctl stop docker
[root@archlinux ~]# tar -czvf var_lib_docker_from_7.tar.gz /var/lib/docker

同样,192.168.1.1也备份/var/lib/docker文件夹

[root@localhost ~]# systemctl stop docker
[root@localhost ~]# tar -czvf var_lib_docker_from_1.tar.gz /var/lib/docker

将192.168.1.1的docker备份文件拷贝到192.168.1.7

[root@archlinux ~]# scp root@192.168.1.1:/root/var_lib_docker_from_1.tar.gz ./

解压并尝试启动

[root@archlinux ~]# tar -zxvf var_lib_docker_from_1.tar.gz
[root@archlinux ~]# cp -rdp ./var/lib/docker/* /var/lib/docker
[root@archlinux ~]# systemctl start docker
[root@archlinux ~]# systemctl status docker

成功。既然成功,其他方式的迁移就先不试了。


评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注