从业务数据的角度看,容器可以分为两类:无状态(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安装使用方法非常简单

centos7下安装docker(16.docker跨主机存储)的更多相关文章

  1. Centos7下安装与卸载docker应用容器引擎

    Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源. Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发布到任何流行的 Li ...

  2. centos7下安装docker(16.1docker跨主机存储--Rex-Ray)

    一.Rex-Ray以standalone进程的方式运行在docker主机上,安装方法很简单:在docker1和docker2上运行如下命令: curl -sSL https://dl.bintray. ...

  3. docker(一) Centos7下安装docker

    docker(一) Centos7下安装dockerdocker(二) windows10下安装dockerdocker(三) 镜像和容器常用命令 docker(四) 使用Dockerfile构建镜像 ...

  4. centos7下安装docker(24docker swarm 数据管理)

    service的容器副本会scal up/down,会failover,会在不同的主机上创建和销毁,这就引出一个问题,如果service有数据,那么这些数据该如何存放呢? 1.打包在容器中: 显然不行 ...

  5. Docker学习之Centos7下安装

    Docker学习之Centos7下安装 centos7 64下直接使用yum安装docker环境,步骤如下: 卸载旧版本docker sudo yum remove docker docker-com ...

  6. CentOS7下安装docker(Docker系列1)

    CentOS7下安装docker 系统要求 为了安装docker,需要准备 64-bit的CentOS 7 删除非官方的Docker包 yum的仓库中有一个很旧的Docker包, 现在Docker官方 ...

  7. centos7下安装docker与镜像加速

    1.背景 centos7下安装docker 2.安装 第一步:检查是否为centos7版本 第二步:依赖环境安装 执行如下两个命令: yum -y install gcc yum -y install ...

  8. Docker学习笔记3:CentOS7下安装Docker-Compose

    Docker-Compose是一个部署多个容器的简单但是非常必要的工具. 安装Docker-Compose之前,请先安装 python-pip,请参考我的另一篇博文CentOS7下安装python-p ...

  9. Docker容器的跨主机连接

    Docker容器的跨主机连接 Docker容器的跨主机连接 使用网桥实现跨主机容器连接 网络拓扑 网络连接使用的是Bridge 操作 修改/etc/network/interfaces文件,分配静态I ...

  10. Docker学习(15) Docker容器的跨主机连接

    Docker容器的跨主机连接 Docker使用网桥跨主机容器连接 Docker使用Open cSwitch实现跨主机容器连接 Docker使用weave实现跨主机容器连接

随机推荐

  1. SpringBoot快速开始Hello World

    介绍 Spring Boot跟Spring MVC不太一样,Spring MVC建新项目的时候是要配置很多东西的,而Spring Boot讲究的是快速,提供了很多默认配置,所以新建一个项目不需要手动配 ...

  2. virtualbox中设置u盘启动

    1.在磁盘管理中查看u盘的磁盘号X 2.管理员运行cmd,进入virtualbox目录 3.运行命令: VBoxManage internalcommands createrawvmdk -filen ...

  3. 对比JavaScript中的Continue和Break

    译者按: 最好是不用,不过基础知识要掌握. 原文: JavaScript: Continue vs Break - Learn the difference between the continue ...

  4. Javascript 跨域知识详细介绍

    JS跨域知识总结: 在“跨域”一词经常性地出现以前,我们其实已经频繁地使用它了.如在A网站的img,src指向B网站的某一图片地址,毫无疑问,这在通常情况下都是能正常显示的(且不论防盗链技术):同样, ...

  5. 聊聊找AI算法岗工作

    https://blog.csdn.net/weixin_42137700/article/details/81628028 首先,本文不是为了增加大家的焦虑感,而是站在一名学生的角度聊聊找AI算法岗 ...

  6. 广州地区.net相关活动的文章

    此文正在更新中... 复活广州.net俱乐部 office365的开发者训练营,免费,在微软广州举办 被低估的.net(上) - 微软MonkeyFest 2018广州分享会活动回顾

  7. 活字格对接RF手持机与ERP系统,帮助RFID快速盘点方案落地

    这个玩意有点意思,要不要搞来玩玩? ----------- 射频技术(RF)是Radio Frequency的缩写,较常见的应用有无线射频识别(Radio Frequency Identificati ...

  8. Android为TV端助力 post带数据请求方式,传递的数据格式包括json和map

    如下: public static String httpPost(String url, String json) { try { URL u = new URL(url); HttpURLConn ...

  9. git 入门教程之本地和远程仓库的本质

    本地仓库和远程仓库在本质上没有太大区别,只不过一个是本地电脑,一个是远程电脑. 远程仓库不一定非得是 github 那种专门的"中央服务器",甚至局域网的另外一台电脑也可以充当&q ...

  10. (后端)项目中的错误之java中判断字符里面含有某些字符

    数据库的数据出现了数据错误.找到原因是因为代码里面Spring的判断所导致的.其实就是判断字符里有01,走这里,有02,走那里,全是if,但是是类似indexOf的那种判断,偏偏有一个数据是0102, ...