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

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

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

实验前提条件:

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

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

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

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

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

【备份容器】
1、查看当前容器列表
docker ps -a2、制作容器备份
docker commit -p 403e6db0baidu jenkins_backup 3、查看备份是否成功
docker images4、将镜像制作成文件
说明:
使用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 jenkins2.导入
docker load < /Users/test/home/DockerImageBackup/jenkins_backup.tar
$ docker images3.运行镜像
sudo docker run -p 8080:8080 -name jenkins -d jenkins_backup4. 启动成功
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, 这时候全公司的人都等着这个系统使用, 这是后排查问题还不如直接使用一个备份镜像更为便捷和快速。

K8S之Docker容器的备份和容灾方案相关推荐

  1. hbase数据备份或者容灾方案

    HBase的数据备份或者容灾方案有这几种:Distcp,CopyTable,Export/Import,Snapshot,Replication,以下分别介绍(以下描述的内容均是基于0.94.20版本 ...

  2. IBM的三种异地容灾方案

    在前一篇中我们介绍数据容灾的重要性和相关技术,从中了解到了数据容灾与我们常见的数据备份是两个不完全等同的概念.在数据容灾中最常采用,也是最有效的方案是异地容灾.这种容灾方案最有保障,因为它是把数据备份 ...

  3. SharePlex for Oracle应用系统高可用和容灾方案

    第1章                             前言 在企业信息化进程不断加快的今天,保持业务的连续性是企业用户进行数据存储时必须考虑的重要方面.灾难的出现可能导致生产停顿.客户满意度 ...

  4. Docker容器的备份和还原

    Docker容器的备份和还原 一.运行容器 1.宿主机目录与容器目录同步方式运行 2.进入容器 3.打包容器内备份数据 4.查看宿主机目录上的容器数据卷 二.备份容器 1.将容器打包 2.删除运行容器 ...

  5. 为什么k8s中docker容器的启动命令必须是前台执行?

    k8s中docker容器的启动命令(在yaml的command字段中配置)必须是前台执行,不能使用后台执行程序, nohup ./start.sh & 否则kubelet创建了包含这个容器的p ...

  6. Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录

    0.目录 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 一.感谢 在此感谢.net ...

  7. Redis 备份、容灾及高可用实战

    一,Redis简单介绍 Redis是一个高性能的key-value非关系型数据库,由于其具有高性能的特性,支持高可用.持久化.多种数据结构.集群等,使其脱颖而出,成为常用的非关系型数据库. 此外,Re ...

  8. 混合云存储开启企业上云新路径--阿里云混合云备份容灾方案发布

    摘要:当前,数据已经成为了企业的核心资产.而如果数据中心发生故障不仅会给企业带来巨大损失,甚至会直接迫使企业走向倒闭.对于企业而言,每一字节业务数据的丢失都是一场重大的灾难!那么,如何保证企业的核心数 ...

  9. 混合云存储开启企业上云新路径--阿里云混合云备份容灾方案发布 1

    摘要: 当前,数据已经成为了企业的核心资产.而如果数据中心发生故障不仅会给企业带来巨大损失,甚至会直接迫使企业走向倒闭.对于企业而言,每一字节业务数据的丢失都是一场重大的灾难!那么,如何保证企业的核心 ...

最新文章

  1. 飞书,助力字节跳动高效成长的神秘引擎
  2. idea 在tomcat中部署的时候 莫名其妙的错误
  3. 南大计算机考研录取,南京大学拟录取名单公示,初试最高446分,推免占比竟高达75%...
  4. SAP UI5 应用开发教程之五十七 - 基于 OData 注解的 Smart Field 使用方法学习试读版
  5. observable_Java Observable addObserver()方法与示例
  6. python上传文件 request_Python request post上传文件常见要点
  7. HelloMybatis
  8. oracle设置口令期限,[20180316]改变oracle用户口令时限.txt
  9. 软考网络工程师考试答疑
  10. 检测卡常见错误代码:12、12、2B、2C、2D、2E、2F、30、31、32、33、34、35、36、37、38、39、3A
  11. python 基类是什么,python 基类是什么意思
  12. 深入浅出曲面的切平面方程和曲面的法线方程
  13. 知行合一ArduPilot | ArduPilot系统框架简述
  14. python读取 xls,xlsx,csv,doc,docx,pdf 格式的文件
  15. 创意竖版产品发布会快闪PPT,等你来拿!
  16. 全球最昂贵的10大科技产品
  17. 第16章 调色盘管理器
  18. 计算机软件系统举例,什么是系统软件应用软件举例说明
  19. [Validation set: 'activiti-executable-process' | Problem: 'activiti-exclusive-gateway-condition-not-
  20. 超全!嵌入式系统词汇速查表

热门文章

  1. “蔚来杯“2022牛客暑期多校训练营2 G.[Link with Monotonic Subsequence] 分块构造
  2. 网易云信发布两大元宇宙解决方案,打响进军元宇宙第一枪
  3. 电信宽带升级了200兆,如何实现真正的提速?
  4. 电脑系统分区篇8:使用DiskGenius对硬盘分区
  5. 为何会选择seo的方式优化
  6. GROM操作mysql数据库
  7. 百知教育-胡鑫喆讲师-java-第一章06
  8. 李岳恒:高可用的以太坊智能合约下的Token经济即将来临
  9. 服务器维护中启动不了怎么办,服务器不能正常启动了怎么办
  10. 2017计算机应用期末考核,2017年秋季计算机应用基础期末考核作业.pdf