zoukankan      html  css  js  c++  java
  • centos7下安装docker(16.docker跨主机存储)

    从业务数据的角度看,容器可以分为两类:无状态(stateless)容器和有状态(stateful)容器。

    无状态:是指容器在运行的过程中不需要保存数据,每次访问的结果不依赖上一次的访问,比如提供静态页面的web服务器。

    有状态:是指容器需要保存数据,而且数据会发生变化,访问的结果依赖之前的请求的处理结果,最典型的就是数据库服务器。

    状态就是:数据,如果容器需要处理并存储数据,他就是有状态的,反之则无状态

    对于有状态的容器,如何保存数据呢?

    我们之前学习了data volume可以存储容器的状态,不过当时讨论的volume其本质是docker主机本地目录。

    通过我们之前的学习我们知道,本地目录存在一个隐患:如果host主机宕机了,如何恢复容器?

    一个办法是定期的备份数据,但这种方案还是会丢失从上次备份到宕机这段时间的数据。更好的方案是由专门的storage provider提供volume,docker从provider哪里获取volume并挂在到容器,这样即使host挂了,也可以立刻从其他可用的host上启动想通镜像的容器,挂载之前使用的volume,这样就不会有数据丢失。

    举个栗子:

    假设有两个docker 主机,Host1上运行了一个MYSQL容器,为了保护数据,data volume由storage provider提供,如盗图:

    当host1发生故障,我们会在host2上启动相同的mysql,并挂载data volume

    docker是如何实现跨主机管理data volume方案的呢?

    答案是:volume driver

     任何一个data volume都是由driver管理的,创建爱你volume时如果不特别指定,将使用local类型的driver,即:从docker host的本地目录中分配存储空间。如果要支持跨主机的volume,则需要使用第三方driver

    目前已经有很多可用的driver,比如使用Azure file storage的driver,使用glusterfs的driver,完整的列表可以参考:https://docs.docker.com/engine/extend/legacy_plugins/#volume-plugins

    我们这里将选择Rex-Ray driver,其原因是:

    1.Rex-Ray是开源的,而且社区活跃

    2.支持多种backend,virtualbox的virtual media,amazon ebs,ceph rbd,openstack cinder等

    3.支持多种操作系统,ubuntu,centos,rhel,coreos

    4.支持多种容器编排引擎,docker swarm,kubernetes和mesos

    5.Rex-Ray安装使用方法非常简单

  • 相关阅读:
    符号运算·
    笔记1
    Linux
    三数比较
    JavaScript变量,作用域和内存
    在HTML中使用JavaScript
    JavaScript基本概念
    JavaScript简介
    上机考试反思与总结
    计算机科学与技术学习方法
  • 原文地址:https://www.cnblogs.com/lkun/p/7885546.html
Copyright © 2011-2022 走看看