Rancher 单节点 docker 部署备份与恢复

Rancher 单节点 docker 部署备份与恢复

1. 备份集群
  1. 获取 rancher server 容器名,本例为 angry_aryabhata

    shell 复制代码
    docker ps | grep rancher/rancher
    
    6a27b8634c80   rancher/rancher:v2.5.14           xxx		   angry_aryabhata
  2. 停止容器

    shell 复制代码
    docker stop angry_aryabhata
  3. 创建备份容器,其中 rancher-data-06071539 建议按照日期时间命名

    shell 复制代码
    docker create --volumes-from angry_aryabhata --name rancher-data-06071539 rancher/rancher:v2.5.14

    打包容器内数据目录,此处 --volumes-from 需填写上一步的容器名称

    shell 复制代码
    docker run --volumes-from rancher-data-06071539 -v $PWD:/backup:z \
    busybox:latest tar pzcvf \
    /backup/rancher-data-backup-v2.5.14-06071539.tar.gz /var/lib/rancher
  4. 查看当前目录下是否有备份文件 rancher-data-backup-v2.5.14-06071539.tar.gz

  5. 删除第 3 步创建的备份数据容器

    shell 复制代码
    docker rm -f rancher-data-06071539
  6. 重新启动 rancher server 容器即可

    shell 复制代码
    docker start angry_aryabhata

2. 恢复集群
  1. 为了对比验证,首先删除 rancher server 数据目录,此时 rancher 已完全崩溃

    shell 复制代码
    rm -rf /home/rancher/
  2. 停止 rancher server 容器

    shell 复制代码
    docker stop angry_aryabhata
  3. 从备份文件恢复

    shell 复制代码
    docker run --volumes-from angry_aryabhata -v $PWD:/backup \
    busybox:latest sh -c "rm /var/lib/rancher/* -rf && \
    tar pzxvf /backup/rancher-data-backup-v2.5.14-06071539.tar.gz"
  4. 重新启动 rancher server 容器

    shell 复制代码
    docker start angry_aryabhata

3. 备份脚本

如果不想手动执行命令,可以使用以下脚本备份,本人 shell 水平有限,如有错误或优化空间还请指正~

shell 复制代码
#!/bin/bash

# 获取 Rancher 容器名称
container_name=$(docker ps | grep rancher/rancher | awk '{print $NF}')

echo "容器名:$container_name"

echo "第一步:停止 Rancher 容器"

docker stop $container_name


echo "第二步:创建备份容器"
# 获取当前日期
current_date=$(date "+%Y%m%d")

docker create --volumes-from $container_name \
	--name rancher-data-$current_date \
	rancher/rancher:v2.5.14


echo "第三步:打包数据文件"
# 以日期戳命名备份文件
file_name="/backup/rancher-data-backup-v2.5.14-$current_date.tar.gz"

docker run --volumes-from rancher-data-$current_date -v $PWD:/backup:z \
	busybox:latest tar pzcvf $file_name /var/lib/rancher

# 判断备份文件是否生成到当前目录下
file_name_local=$(basename "$file_name")
if [ -f "$file_name_local" ]; then
	echo "备份文件已生成:$file_name_local"
else
	echo "备份文件未生成,请检查!"
	exit 1
fi


echo "第四步:删除备份容器"

docker rm -f rancher-data-$current_date


echo "第五步:重新启动 Rancher 容器"

docker start $container_name
相关推荐
星辰徐哥3 小时前
本地视频预览别只自己看:把Remotion动效项目发给客户远程验收
docker·ai·node.js·html·音视频·react·remotion
正仪4 小时前
kubernetes中list-watch机制
云原生·容器·kubernetes
cui_hao_nan6 小时前
从零搭建 Kubernetes 集群:Ubuntu + kubeadm 完整实战
ubuntu·容器·kubernetes
fb_123456 小时前
Docker入门-第3章-容器镜像深度解析
运维·docker·容器
IT摆渡者8 小时前
基于 Docker 部署 Nextcloud 私有云盘(外挂 Windows 共享)项目实践
运维·docker·容器
墨香幽梦客9 小时前
Kubernetes+Istio实现CRM系统弹性伸缩:服务网格下的流量治理与熔断策略
容器·kubernetes·istio
新时代牛马9 小时前
单机 docker run 管不住了?从编排需求、期望状态到调度/自愈闭环讲透
运维·docker·容器
binqian10 小时前
Docker Desktop(WSL2 后端)三层网络互通技术文档
网络·docker·容器
LuiChun11 小时前
与精神病患者的日常探讨20260913
docker
闲云野鹤在人间11 小时前
Docker入门|第1章 容器生态系统完整解析
运维·服务器·docker·容器·centos