DockerCon 2016 深度解读:容器定义存储一窥

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 谁说Docker只能运行无状态的应用?本次DockerCon大会,众多容器存储解决方案的厂商齐聚一堂。有很早就推出开源容器数据管理Flocker的ClusterHQ,传统存储巨头EMC,初创公司Portworx,另外华为推出了自己的容器存储Elara,阿里云也支持通过数据卷来管理存储。

谁说Docker只能运行无状态的应用?本次DockerCon大会,众多容器存储解决方案的厂商齐聚一堂,展示了不同的产品或解决方案。有很早就推出开源容器数据管理Flocker的ClusterHQ,传统存储巨头EMC,初创公司Portworx,另外华为推出了自己的容器存储Elara,阿里云也支持通过数据卷(支持OSSFS和NAS)来管理用户的容器数据。

container_storage

基于容器的存储方案和传统的存储方案的区别

作为非存储领域的人,尝试从容器的角度理解下基于容器的存储方案和传统的存储方案的区别:

  1. 容器更易变:

    • 存储要能随着容器迁移自动挂载
    • 要能和已有容器调度框架整合
  2. 容器更细粒度和高密度:

    • 这样场景下的拷贝、快照、Quota、流控有新的挑战
  3. 容器和后端存储的对接:

    • 需要考虑在不同的环境下(公有云、自有机房等)支持不同的存储后端
    • 如何横向扩展
    • 如何保证挂载速度(挂载了卷轴后是否还能做到容器秒级启动?)
    • 更友好的动态显示容器的挂载状态(挂载中、等待中等)
    • 是否可以复用容器所在机器的存储资源
  4. 应用感知和云端感知:

    • 根据容器的部署信息,对后端存储做调度,数据贴近服务
    • 如何根据运行节点和存储节点间的网络情况做相应的调度
    • 识别云平台的可用区概念和地域

我们再回顾下在使用容器之前的几种简单玩法:

  1. 单机:很多VPS的场景,固定一台机器,数据不迁移。
  2. 多机共享存储:块存储(SAN)、文件存储(NAS)、对象存储(OSS)
  3. 多机数据拷贝:数据层拷贝(rsync)、应用层拷贝(如mysql binlog)

接下来分别看下几家厂商的存储方案:

ClusterHQ:

Flocker:

Flocker是较早推出的一个开源容器数据卷管理框架,对接了SwarmKubernetsMesosphere,基于Ext4支持很多的存储后端。
flocker

Volume Hub:

Flocker的图形化工具,支持显示所有节点上的容器、卷轴信息以及绑定状态,还支持数据卷的日志显示,很方便问题排查。目前还只是0.1 alpha版本。
volume_hub

dvol:

可以像git一样的版本管理Docker的数据卷,非常赞的功能,便于在调试阶段做对比。其实际上也是一个docker 的volume plugin。

  • docker run -v demo:/path --volume-driver=dvol
  • dvol commit -m "commit description"
  • dvol checkout -b newbranch

华为 Elara

Elara定位于容器编排框架和底层存储的桥梁,相对于Flocker,有一些设计上的区别:

  1. Flocker有中心节点,而Elara的所有Agent是分布式无状态的,只依赖kv
  2. 目前Flocker依赖的Docker的volume plugin接口比较少,只有创建和Mount的操作。Elara在自己的API上额外支持了快照、备份和流控等接口。
  3. 类似于Cinder支持存储资源调度

Portworx

Portworx是一家位于加州的初创公司。他的定位非常明确:在容器时代,专门购买存储设备是一个不符合潮流的做法。而使用Portworx的产品,可以直接利用运行容器的x86机器作为存储载体,其存储和管理节点也是以容器方式运行。存储成本可以降低70%,同时支持容器级别的快照、复制等管理能力。本月刚推出了企业版的PX-Enterprise产品。

下面展示的是在kubernets上部署myql的示例:

apiVersion: v1
kind: Pod
metadata:
  name: mysql
  labels:
    name: mysql
spec:
  containers: 
    - 
      name: mysql
      image: mysql:latest
      env: 
        - 
          name: MYSQL_PASSWORD
          value: mysql
      ports: 
        - 
          containerPort: 3306
     volumeMounts:
        - name: mysql-persistent-storage
          mountPath: /var/lib/mysql
volumes:
      - name: mysql-persistent-storage
         pwxDiskName: mysql-disk
         fsType: ext4
         cos:2  
         snapshots: 12h  #定时快照时间
         haFactor: 3
         size: 4TB

EMC

EMC code也不甘落后,在原有开源产品libStorage之上,拥抱容器社区,将存储作为一等公民,提供平台无关的框架,支持存储的生产、编排和控制。libStorage支持三种架构:嵌入式、集中式和分布式。libStorage通过REX-Ray提供厂商无关的存储编排引擎,为Docker和Mesos运行环境提供支持。

下图为libStorage分布式架构图:
libstorage

阿里云

阿里云容器服务也提供了数据卷的功能帮忙用户更好的管理存储,目前支持通过OSSFS和NAS提供共享文件存储。

OSSFS

ossfs是阿里云官方提供的基于FUSE的文件系统,项目主页见https://github.com/aliyun/ossfs

ossfs适合于对IO性能要求比较低并且没有文件改写的场景,如保存wordpress上传的配置和图片。

ossfs和本地文件系统具体差异:

  • 随机或者追加写文件会导致整个文件的重写。
  • 元数据操作,例如list directory,性能较差,因为需要远程访问OSS服务器。
  • 文件/文件夹的rename操作不是原子的。
  • 多个客户端挂载同一个oss bucket时,依赖用户自行协调各个客户端的行为。例如避免多个客户端写同一个文件等等。
  • 不支持hard link。

虽然OSSFS在使用场景和性能上会比接下来介绍的NAS方案弱一些,但是价格会便宜很多。

NAS

阿里云NAS是面向阿里云ECS实例的文件存储服务,提供标准的文件访问协议,用户无需对现有应用做任何修改,即可使用具备无限容量及性能扩展、单一命名空间、多共享、高可靠和高可用等特性的分布式文件系统。

只需要两步即可完成数据卷的管理:

  1. 创建数据卷,设置数据卷的名称、阿里云NAS产品的文件系统ID和挂载点域名
    volume
  2. 创建容器时设置容器内部路径,设置上一个步骤的数据卷名就可完成目录映射。
    volume2

阿里云容器服务正在测试对云盘的支持,会在近期推出。除此以外,阿里云容器服务支持标准的Docker volume plugin机制,任何volume插件都可以方便的集成进来,一些合作伙伴的集成也正在火热进行中。想了解更多阿里云容器服务的内容,请访问:http://www.aliyun.com/product/containerservice

相关实践学习
使用ACS算力快速搭建生成式会话应用
阿里云容器计算服务 ACS(Container Compute Service)以Kubernetes为使用界面,采用Serverless形态提供弹性的算力资源,使您轻松高效运行容器应用。本文将指导您如何通过ACS控制台及ACS集群证书在ACS集群中快速部署并公开一个容器化生成式AI会话应用,并监控应用的运行情况。
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
目录
相关文章
|
Cloud Native 测试技术 持续交付
Docker Compose 解析:定义和管理多容器应用,从多角度探索其优势和应用场景
Docker Compose 解析:定义和管理多容器应用,从多角度探索其优势和应用场景
612 0
|
存储 边缘计算 数据管理
Docker 存储驱动解析:选择最适合你的存储方案,优化容器化部署性能和数据管理
Docker 存储驱动解析:选择最适合你的存储方案,优化容器化部署性能和数据管理
554 0
|
10月前
|
存储 监控 对象存储
ACK 容器监控存储全面更新:让您的应用运行更稳定、更透明
针对本地存储和 PVC 这两种容器存储使用方式,我们对 ACK 的容器存储监控功能进行了全新升级。此次更新完善了对集群中不同存储类型的监控能力,不仅对之前已有的监控大盘进行了优化,还针对不同的云存储类型,上线了全新的监控大盘,确保用户能够更好地理解和管理容器业务应用的存储资源。
636 273
|
8月前
|
存储 监控 对象存储
ACK 容器监控存储全面更新:让您的应用运行更稳定、更透明
ACK 容器监控存储全面更新:让您的应用运行更稳定、更透明
263 0
ACK 容器监控存储全面更新:让您的应用运行更稳定、更透明
|
9月前
|
存储 监控 对象存储
ACK 容器监控存储全面更新:让您的应用运行更稳定、更透明
ACK 容器监控存储全面更新:让您的应用运行更稳定、更透明
194 1
|
8月前
|
存储 运维 Kubernetes
容器数据保护:基于容器服务 Kubernetes 版(ACK)备份中心实现K8s存储卷一键备份与恢复
阿里云ACK备份中心提供一站式容器化业务灾备及迁移方案,减少数据丢失风险,确保业务稳定运行。
|
10月前
|
存储 监控 对象存储
ACK容器监控存储全面更新:让您的应用运行更稳定、更透明
介绍升级之后的ACK容器监控体系,包括各大盘界面展示和概要介绍。
|
存储 Kubernetes Cloud Native
【阿里云云原生专栏】云原生容器存储:阿里云CSI与EBS的高效配合策略
【5月更文挑战第29天】阿里云提供云原生容器存储接口(CSI)和弹性块存储(EBS)解决方案,以应对云原生环境中的数据存储挑战。CSI作为Kubernetes的标准接口简化存储管理,而EBS则提供高性能、高可靠性的块存储服务。二者协同实现动态供应、弹性伸缩及数据备份恢复。示例代码展示了在Kubernetes中使用CSI和EBS创建存储卷的过程。
552 3
|
存储 Linux Docker
CentOS7修改Docker容器和镜像默认存储位置
CentOS7修改Docker容器和镜像默认存储位置
|
存储 JavaScript 容器
TS,添加注释,//,ctrl + /,shift + alt + a,输出语句,console.log(“Hello Ts‘),变量和数据类型导读,变量就是用来存储数据的容器,变量的使用,TS
TS,添加注释,//,ctrl + /,shift + alt + a,输出语句,console.log(“Hello Ts‘),变量和数据类型导读,变量就是用来存储数据的容器,变量的使用,TS