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
成功。既然成功,其他方式的迁移就先不试了。
发表回复