K8S之Docker容器的备份和容灾方案

2023-05-16

数据安全在当今复杂的IT世界中变得越来越重要,甚至超越了网络安全和信息安全,因为一切企业基本上都是以业务和应用的线上商业发展之道。所以大家变得尤为重视。

Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源;跨平台应用容器引擎服务。

那么今天我们就讨论说说在kubernetes集群管理中Docker容器是如何备份、恢复、迁移、导入和导出的。【注意此文章只提供思路,不作为企业报告正式使用,也可以单独联系作者服务支持】

实验前提条件:

【所有的理论知识都要付诸实践,此文有些地方简写了部分,为了企业信息安全】

1、准备一台linux服务器或者云服(现在618活动力度大)

2、必须要先安装Docker容器等环境(yum安装或者最新的系统里已集成)

3、一定再三强调关闭selinux服务,不然各种坑等着你

一、常规的镜像导出和导入

【备份容器】
1、查看当前容器列表
docker ps -a

2、制作容器备份 
docker commit -p 403e6db0baidu jenkins_backup 

3、查看备份是否成功
docker images

4、将镜像制作成文件
说明: 
使用docker save 可能需要使用root权限

保存的命令是:
docker save -o [filename] [image]

[cloud@localhost ~]$ docker save -o jenkins_backup.tar jenkins_backup

[cloud@localhost ~]$ ls
jenkins_backup.tar

备份文件制作完成!

5、在本地使用命令将镜像从远程备份到本地
[cloud@localhost ~]$scp cloud@192.168.10.100:/home/dockerdata/jenkins_backup.tar  /Users/test/home/DockerImageBackup

【恢复容器】

1. 为了验证容器是否能正常导入, 先删除docker 里的镜像 
docker rmi jenkins

2.导入
docker load < /Users/test/home/DockerImageBackup/jenkins_backup.tar 
$ docker images

3.运行镜像
sudo docker run -p 8080:8080 -name jenkins -d jenkins_backup

4. 启动成功
903e6db0baidu   jenkins/jenkins    "/sbin/tini -- /usr/…"     Up 1 min    0.0.0.0:8080->8080/tcp, :::8080->8080/tcp, 0.0.0.0:50000->50000/tcp, :::50000->50000/tcp          jenkins

二、tar压缩备份

Docker打包应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux机器上,也可以实现虚拟化,Docker是跨平台的容器引擎,支持Windows、MAC OS、Linux等。

容器是完全使用沙箱机制,相互之间不会有任何接口,实现了资源隔离技术,容器内的资源互不影响,更重要的是容器性能开销极低。

Docker镜像拉取

docker pull mysql:5.6
..........................
..........................
caddb3474aca: Pull complete 
ec101f8c3a86: Pull complete 
Digest: sha256:60c27b50ca72d81d92a743a965a82f124a4e123c7d374a021887286408878d60
Status: Downloaded newer image for mysql:5.6
docker.io/library/mysql:5.6

Docker容器备份

root@linux:~# docker image save mysql:5.6 -o mysql:5.6.tar.gz
mysql:5.6:本地镜像
mysql:5.6.tar.gz:打包后的镜像文件

Docker容器导出

root@linux:~# docker save mysql:5.6 > mysql:5.6.tar.gz
mysql:5.6:本地镜像
mysql:5.6.tar.gz:打包后的镜像文件

Docker容器恢复

root@linux:~# docker image load -i mysql:5.6.tar.gz
mysql:5.6.tar.gz:打包后的镜像文件

Docker容器导入

root@linux:~# docker image load < mysql:5.6.tar.gz
Loaded image: mysql:5.6
mysql:5.6.tar.gz:打包后的镜像文件

三、Docker修改默认存储位置

默认情况下Docker的存放位置为:/var/lib/docker

sudo docker info | grep "Docker Root Dir"

时间久了或者容器里应用数据量大了或者文件inode数量满了,这个分区就用完了,然后资源服务无就不可用了,所以如果坚持使用默认分区的同学,一定要在安装之前把分区或者挂载整大点。

此文章不重点讨论如何修改默认位置,而是可以通过挂载外部的文件系统进行存放位置,从而间接实现备份的目的。如果并发或者读写比较高建议直接上oss或者CFS(即对象存储或者文件存储)

文件系统创建完成后会在文件系统列表中显示。云上的虚拟机、容器等计算资源需要通过挂载点挂载至文件系统,所以需要为文件系统添加挂载点(自动识别云实例鼠标选择要挂载的id即可)

并且支持挂载NFS文件系统/SMB文件系统

也可以安装第三方软件协议,直接通过命令的方式进行sync 到 协议:/存储的对应位置/

四、注册中心

正如我们所看见的,上面做的快照已经作为Docker镜像保存了。现在,为了备份该快照,我们有两个选择,一个是我们可以登录进Docker注册中心,并推送该镜像;另一个是我们可以将Docker镜像打包成tar包备份,以供今后使用。
如果我们想要在Docker注册中心上传或备份镜像,我们只需要运行 docker login 命令来登录进Docker注册中心,然后推送所需的镜像即可。

# docker tag a25ddfec4d2a arunpyasi/container-backup:test# docker push arunpyasi/container-backup 

如果我们不想备份到docker注册中心,而是想要将此镜像保存在本地机器中,以供日后使用,那么我们可以将其作为tar包备份。要完成该操作,我们需要运行以下 docker save 命令。

# docker save -o ~/container-backup.tar container-backup

要验证tar包是否已经生成,我们只需要在保存tar包的目录中运行 ls 命令即可。 

 

五、docker仓库可以用对像存储或者NFS或者NAS或者分布式存储

直接修改本地的docker镜像tag(也叫重命名镜像),然后直接推送给仓库

docker tag 【镜像ID】【镜像名称】:【tag版本信息】 

docker tag 8ef375298394 mysql:v5.7

查看是否运行,然后使用docker stop停止后docker rm删除container,再删除image。

六、harbo私有仓库方案

docker私有仓库可以做到和yum或者github仓库一样,进行私有化部署存储企业自己的镜像

后面会专门写一篇文章单独来讲解这个运作机制,欢迎关注!

七、各大共有云厂商的K8S备份机制

阿里云、腾讯云和华为云等都有容器和k8s的备份机制产品,直接就可以拿来用真的很方便!

如果担心单点故障,etcd存储高可用和控制器多复本就可以解决。

八、Docker容器迁移

迁移容器同时涉及到了上面两个操作,备份和恢复。我们可以将任何一个Docker容器从一台机器迁移到另一台机器。在迁移过程中,首先我们将把容器备份为Docker镜像快照。然后,该Docker镜像或者是被推送到了Docker注册中心,或者被作为tar包文件保存到了本地。如果我们将镜像推送到了Docker注册中心,我们简单地从任何我们想要的机器上使用 docker run 命令来恢复并运行该容器。但是,如果我们将镜像打包成tar包备份到了本地,我们只需要拷贝或移动该镜像到我们想要的机器上,加载该镜像并运行需要的容器即可。

        Docker容器迁移其实就是把现有的已经在运行Docker容器的服务器迁移到新的容器中,我们可以通过上面备份、恢复、导入、导出操作来完成迁移;如果企业镜像比较多的情况下,也可以配置私有仓库,通过私有仓库去拉取要迁移同步的镜像资源,再运行拉取的镜像,这样也可以完成容器迁移过程;后续继续发布私有仓库harbor的安装及配置,这样可以把业务中的镜像全部推送到私有仓库中,提高工作效率。

写在最后想一想:为什么要备份容器?

作为一名合格的程序猿, 时时刻刻都要思考应用或者(service)的容错以及灾备, 他是保障我们日后快速恢复工作必不可少的条件。

容器由于种种原因会损坏而无法正常work, 这时候全公司的人都等着这个系统使用, 这是后排查问题还不如直接使用一个备份镜像更为便捷和快速。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

K8S之Docker容器的备份和容灾方案 的相关文章

  • 【record】2、使用非官方遥控器适配prometheus的驱动修改

    0 前言 xff1a prometheus V2推荐使用阿木的遥控器 但是家里遥控器实在太多了 xff0c 所以就尝试修改一下prometheus里关于joystick的驱动 xff0c 使其适配prometheus的控制 xff1b 本篇
  • 【recode】3、地面站使用步骤与体验

    一 前言 从Prometheus的V1到V2 xff0c 无人机的状态显示是在终端中 xff0c 在一堆字符中寻找想要关注的信息 xff0c 确实硬核 xff1b 而今 xff0c 随着社会与科技的发展 xff0c Prometheus也开
  • 【recode】4、二维码自主降落与重复测试code修改

    0 前言 使用二维码辅助无人机降落 xff0c 模拟飞机先飞到二维码上空一定的高度 xff0c 然后切换到command control模式 xff1b 飞机会自动识别二维码的位置然后调整自身的X和Y位置信息 xff0c 同时控制高度进行下
  • 【code review】2、关于高度的估计过程

    0 前言 在定高模式中 xff0c 飞控需要有当前高度的信息 xff0c 也就是z的position信息 xff0c 进行Z轴的位置环控制 xff1b 那么这个Z轴的位置信息是怎么来的呢 xff1f 本文为在解读wukong FPV源码中Z
  • (开源)正点原子飞控+北醒tof+优象光流——室内定点(一)

    1 说明 xff1a 前几篇文章讲述了如何使用tof的数据实现飞机的定高 xff1b 接下来分享的是如何使用光流来定点 xff1b 主要分为以下几个步骤 xff1a 1 xff09 添加光流驱动 xff0c 获得x y轴方向的观测速度 xf
  • STM32的三种更新固件的方式

    说明 xff1a stm32有三种更新固件的方式 xff0c 分别为 xff08 1 xff09 DFU模式 xff08 Development Firmware Upgrade 即 开发固件升级 xff09 xff1b xff08 2 x
  • 有哪些比较好用的安卓模拟器(电脑端)

    模拟器帮助我们实现在电脑上玩手游的下载 目前市面上安卓模拟器软件看着种类繁多 xff0c 哪些模拟器比较好用呢 xff1f 但其实只有两大技术流派 xff1a Bluestacks和Virutalbox Bluestacks的历史可以追溯到
  • [icm42688]_readme

    记录一个使用icm42688的坑 xff1b 上图为42688的引脚连接图 xff1b 引脚说明处标注如果FSYNC不使用需要接地 xff1b 在实际测试驱动的过程中 xff0c 由于没有将该pin接地 xff0c 所以无法读取id 从机没
  • atbetaflight——指定commit号编译固件

    一 说明 在开发过程中 xff0c 比如成员A上传了一次code 而成员B需要测试本次提交的code xff0c 但是由于没有搭建ci 成员B就需要自己拉code编译 xff0c 本文将详细说明编译步骤 xff1b 二 步骤 1 使用vsc
  • atbf中imu数据的读取与处理方式

    一 说明 本文为作者在阅读atbf源码的过程中 xff0c 对atbf中imu数据的读取和处理方式的个人理解 xff0c 可能存在不对之处 xff0c 意在抛砖引玉 xff0c 请各位老师多多指正 xff1b 二 数据读取流程图 1 tar
  • atbf中imu数据读取逻辑分析仪抓取

    一 说明 使用逻辑分析仪抓区imu的spi和中断io的信号 xff0c 从而侧面描述atbf在imu上的数据读取方式 xff1b 二 硬件说明 1 硬件材料 1 mcu at32F437开发板 2 imu icm42688p 3 逻辑分析仪
  • cmake-自动识别新增子模块

    实际的项目中可能会有这种需求 xff0c 随着项目的进行 xff0c 会有新增的子模块 xff0c 如果每新增一个子模块 xff0c 顶层CMakeLists txt都要同步修改一次 xff0c 一般工程代码加入了版本控制 xff0c 那么
  • CSDN每日一练c++难题-大数加法 C语言

    题目名称 xff1a c 43 43 难题 大数加法 时间限制 xff1a 1000ms内存限制 xff1a 256M 题目描述 大数一直是一个c语言的一个难题 现在我们需要你手动模拟出大数加法过程 请你给出两个大整数加法结果 输入描述 x
  • Ubuntu软件包资源官网下载教程(包含所有下载源)

    官网地址 国外 xff1a Ubuntu Ubuntu Packages Search https packages ubuntu com 国内 xff1a Ubuntu Ubuntu Packages Search https packa
  • 基于ROS的YOLOV3实现目标检测项目过程记录

    lt link rel 61 34 stylesheet 34 href 61 34 https csdnimg cn release blogv2 dist mdeditor css editerView ck htmledit view
  • darknet_ros(yolo移植到ros系统)代码分析

    lt link rel 61 34 stylesheet 34 href 61 34 https csdnimg cn release blogv2 dist mdeditor css editerView ck htmledit view
  • DSP28335的PWM信号

    DSP的PWM信号 简介 DSP28335共12路16位的ePWM xff0c 能进行频率和占空比控制 ePWM的时钟TBCLK 61 SYSCLKOUT HSPCLKDIV CLKDIV PWM信号频率由时基周期寄存器TBPDR和时基计数
  • Kubernetes (k8s)最佳安全实践指南

    对于大部分 Kubernetes 用户来说 xff0c 安全是无关紧要的 xff0c 或者说没那么紧要 xff0c 就算考虑到了 xff0c 也只是敷衍一下 xff0c 草草了事 实际上 Kubernetes 提供了非常多的选项可以大大提高
  • DSP28335 CAN模块详解

    1 CAN2 0B协议简述 TMS320F28335上有2个增强型CAN总线控制器 xff0c 符合CAN2 0B协议 xff0c 其总线波特率可达到1Mbps 符合CAN2 0B协议的数据帧为扩展数据帧 xff0c 即采用29位标识符 数
  • DSP28335看门狗复位

    1 看门狗时钟 看门狗时钟发生器 WDCLK 61 CLKOUT 512 xff0c 当HALT时停止 6 bits预定标WDPS选择 xff1a 将WDCLK再分频后送给看门狗定时器 WDPS为WDCR的2 0 位 其6 bits配置作用

随机推荐

  • DSP28335 看门狗初始化函数

    DSP28335 看门狗初始化函数 看门狗初始化程序 入口参数为系统定时复位时间 在需要复位看门狗计数器的地方调用程序ServiceDog 此程序在文件DSP2833x SysCtrl c中 详细说明在 TMS320x
  • Keil5编译error:core_cm3.h

    当打开现成的工程项目时 xff0c 编译出现一堆错误 xff0c 大部分错误出现关于 core cm3 h 这个文件 xff0c 那么大概率可能跟Keil5的版本有关 xff0c 如下 xff1a 可能原因 xff1a 打开魔术棒 gt T
  • Simulink创建子系统,创建引用模型,调用模型,加密模型

    Simulink创建子系统 创建引用模型 调用模型 加密模型 一 创建子系统 1 创建新工程 并添加Logical Operator Unit Delay连线 完成如下图 全选所有模块 右键选择 基于所选内容创建子系统 ctrl G 完成如
  • 自动驾驶 2D 单目\双目\多目视觉方法 一(Pseudo-LiDAR,Mono3D,FCOS3D,PSMNet)

    文章目录 概述单目3D感知3D目标检测单目深度估计 双目3D感知双目3D目标检测双目深度估计 Pseudo LiDAR1 核心思路总结2 要点分析 Mono3DFCOS3DPSMNet 概述 自动驾驶中必不可少的3D场景感知 因为深度信息
  • [C语言] 利用库函数实现查找指定键值对功能

    1 功能描述 键值对 xff08 key 61 value xff09 字符串 xff0c 在开发中经常使用 要求1 xff1a 请自己定义一个接口 xff0c 实现根据key获取 要求2 xff1a 编写测试用例 要求3 xff1a 键值
  • 【C++】Clang-Format:代码自动格式化(看这一篇就够了)

    文章目录 Clang format格式化C代码1 引言 amp 安装1 1引言1 2 安装 2 配置字解释2 1 language 编程语言2 2 BaseOnStyle 基础风格2 3 AccessModifierOffset 访问性修饰
  • 生产者消费者问题(Producer-consumer problem)

    概述 生产者消费者问题 xff0c 也称有限缓冲问题 xff08 英语 xff1a Bounded buffer problem xff09 xff0c 是一个多线程同步问题的经典案例 该问题描述了两个共享固定大小缓冲区的线程 即所谓的 生
  • Yolov3+C+++opencv+VS2015训练过程及检测(很详细)

    运行环境 我的运行环境是C 43 43 43 opencv 43 VS2015 43 yolov3 xff0c 切记opencv的版本最好是opencv 3 4 2版以上的 xff0c 这个版本以后才有了DNN函数库来实现机器学习的相关内容
  • RAID容量在线计算器

    RAID容量计算器在线工具 xff0c 可以简单快速地获取各RAID需要的硬盘 xff0c 可用容量 以下地址任意打开一个即可快速获取RAID硬盘 容量 好用的工具就是要给大家一起分享 https www synology cn zh cn
  • C++代码自动检测工具clang-format和clang-tidy

    文章目录 96 clang format 96 安装方法命令格式使用案例更多关于 96 clang format 96 96 clang tidy 96 简单介绍检测原理安装方法使用方法更多关于 96 clang tidy 96 clang
  • Python作为人工智能首选编程语言,你能了解多少呢?

    为何人工智能 AI 首选Python xff1f 读完这篇文章你就知道了 我们看谷歌的TensorFlow基本上所有的代码都是C 43 43 和Python xff0c 其他语言一般只有几千行 如果讲运行速度的部分 xff0c 用C 43
  • 错误代码:WHEA_INTERAL_ERROR—蓝屏

    非常奇怪哦 xff0c 什么都没干 xff0c 笔记本电脑打不开 xff0c 蓝屏 xff0c 呀呀呀 xff0c 搞了一个小时 xff0c 最后终于解决解决办法很简单 xff0c 拔掉所有外设 xff0c 如鼠标 xff0c 键盘 xff
  • NB-IoT技术实战开发 ----- NB-IoT介绍

    一 1 初识NB IoT 1 NB IoT介绍2 物联网技术发展2 1有线物联网2 2 无线网络网 3 为什么需要NB IOT4 NB IOT优势5 NB IOT解决方案亮点和价值5 1 广覆盖5 2 低功耗5 3低成本5 4 大连接 6
  • 已知两个长度分别为m 和 n 的升序链表,若将它们合并为一个长度为 m+n 的降序链表,则最坏情况下的时间复杂度是()

    王道书第七面的第六题 xff0c 理解了一下午终于解决 xff01 算法的本质 xff1a 两个表进行比较 xff0c 其中一个表比较完之后 xff0c 剩下的直接插入 因此最好的情况 xff0c 不用想的太复杂 xff0c 其实就只是短的
  • 用例间的三种关系(小白必看)

    用例间的三种关系 xff0c 瞎子都能看懂 xff01 xff01 xff01 1 包含2 泛化3 扩展 1 包含 指向分解出来的用例 把一个复杂的步骤分解为较小的步骤 2 泛化 指向父用例 继承关系 xff0c 子用例有特别功能 eg1
  • ev加密视频转换成MP4格式,亲测可用

    需要的话私信我即可 ev4加密视频转换 觉得有用的话点个关注吧 xff0c 谢谢大家 需要该破解软件的话 xff0c 直接评论区留言即可 xff0c 我每天都会看csdn的 xff0c 杜绝二次间接收费 xff0c 全程免费分享 xff0c
  • 机器学习个人总结(王道版)

    机器学习流程 xff1a 预处理 gt 特征工程 gt 机器学习算法 选择合适的算法 gt 评估 强化学习 xff1a 用人工智能去调参 数据也是一种财富离散型数据 xff1a 由记录不同类别个体的数目所得到的数据 xff0c 又称计数数据
  • 深度学习(王道学习篇)

    在ubuntu中安装虚拟环境 设置pip安装源步骤 1 mkdir pip 2 cd pip 3 vim pip conf 4 往pip conf放入 global timeout 61 6000 index url 61 http pyp
  • python程序打包成exe文件

    1 打包成多文件 把你的运行环境导出来 pip intsall requests pip freeze span class token operator gt span requirets span class token punctua
  • K8S之Docker容器的备份和容灾方案

    数据安全在当今复杂的IT世界中变得越来越重要 xff0c 甚至超越了网络安全和信息安全 xff0c 因为一切企业基本上都是以业务和应用的线上商业发展之道 所以大家变得尤为重视 Docker 是一个开源的应用容器引擎 xff0c 基于 Go