Debian下Docker中的数据迁移+快照迁移

2022年7月27日 821点热度 1人点赞 0条评论

Debian下Docker中的数据迁移+快照迁移

Docker实际使用过程中,如果碰见服务器主机迁移的时,这时需要在新的服务器主机安装Docker,但随之而来的问题是Docker中的数据怎么办?

如果当初建立镜像的时候,选择的是目录引射的话,只需要在新服务器安装Docker,然后创建容器与映射目录,之后复制就的映射目录中的内容就可以了。

而实际中如果新建Docker容器的时候没有选择映射目录,那么我们就需要另外的迁移方法了。

首先我们的前提条件是你新服务器中已经安装了Docker了,并且保持大版本一致

先需要安装Docker,然后迁移快照,之后在迁移数据。

 

Docker快照迁移

注意,此阶段Docker不能关闭,切对应镜像的容器处于运行中

 

第一步:打包镜像

# 查看所有容器ID
docker ps

# 将对应容器ID的镜像新镜像生产
docker commit -p f47f3a9b887d gitea-backup

# 生成之后的位置
docker images

# 将容器打包,到root目录下
docker save -o /root/gitea-backup.tar gitea-backup

# 将打包的进行上传至新服务器,可以使用FTP或者后面介绍的rsync 命令

Debian下Docker中的数据迁移+快照迁移

 

第二步:在新服务器加载镜像

# 加载镜像
docker load -i ~/gitea-backup.tar

# 查看是否已经加载
docker images

# 启动容器,此命令为演示,请查看实际镜像的文档进行执行
# docker run -d -p 80:80 gitea-backup

 

 

 

Docker数据覆盖迁移

我们需停止容器的运行,Docker不停止也可以

 

第一步:如果数据量大的情况下,服务器之间迁移我们需要一些帮我们省力的工具

注意⚠️:rsync需要双端服务器都安装,如果是服务器那边的迁移,只需要安装一次就行

# 如果双方服务器中没有rsync的情况下,请使用以下命令安装
apt-get install rsync

# 如果出现以下错误
# Package 'rsync' has no installation candidate
# 请执行下面命令
apt-get update
apt-get upgrade

 

第二步:将数据覆盖至新的docker目录

# 复制终端不小心断开的情况下,迁移命令将在 screen 中执行
screen -S dockerbackup

# 从当前服务器迁移至其他服务器
rsync -av /var/lib/docker root@192.168.2.1:/var/lib/docker

# 根据提示输入192.168.2.1的root密码,接下来就是等待同步结束,如果数据量太大的话,可以喝杯茶了。

 

第三步:重启Docker,并且启动容器

# 依次执行以下命令
systemctl daemon-reload 
systemctl restart docker
systemctl enable docker

# 启动容器

 

 

 

Docker数据迁移至新数据盘

我们需停止容器的运行,Docker不停止也可以

 

第一步:如果数据量大的情况下,服务器之间迁移我们需要一些帮我们省力的工具

注意⚠️:rsync需要双端服务器都安装,如果是服务器那边的迁移,只需要安装一次就行

# 如果双方服务器中没有rsync的情况下,请使用以下命令安装
apt-get install rsync

# 如果出现以下错误
# Package 'rsync' has no installation candidate
# 请执行下面命令
apt-get update
apt-get upgrade

 

第二步:将数据迁移至新的docker目录

# 复制终端不小心断开的情况下,迁移命令将在 screen 中执行
screen -S dockerbackup

# 从当前服务器迁移至其他服务器
rsync -av /var/lib/docker root@192.168.2.1:/data/docker

# 根据提示输入192.168.2.1的root密码,接下来就是等待同步结束,如果数据量太大的话,可以喝杯茶了。

 

第三步:修改Docker中docker.service 配置文件

# 关闭开机启动
systemctl disable docker
# 打印内容
# Removed /etc/systemd/system/multi-user.target.wants/docker.service.

# 开机启动
systemctl enable docker
# 打印配置文件所在目录
# Created symlink /etc/systemd/system/multi-user.target.wants/docker.service → /lib/systemd/system/docker.service.

# 修改配置文件
vi /lib/systemd/system/docker.service 

# 注释掉配置中的 ExecStart
#ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
# 在下面新增一行,/www/docker 就是你Docker数据文件新的目录
ExecStart=/usr/bin/dockerd --graph=/www/docker

Debian下Docker中的数据迁移+快照迁移

 

第四步:重启Docker,并且启动容器

# 依次执行以下命令
systemctl daemon-reload 
systemctl restart docker
systemctl enable docker

# 启动容器

 

 

 

此方法使用与宝塔面板中的Docker迁移。

帮助教程

提供最新的帮助教程,方便使用。

文章评论