编者注:

本文为9月27日晚上8点有容云平台存储架构师张朝潞在腾讯课堂中演讲的PPT,本次课堂为有容云主办的线上直播Docker Live时代●Online Meetup-第三期:Docker定义存储--让应用无痛运行中,文中跟大家讨论了如何为容器选择合适的存储方案,具体详情见以下PPT分享内容。

Q&A

Q:Docker使用外部存储,把外部存储直接给宿主机挂载,容器再使用宿主机挂载的外部存储效率会不会更高?

A:这种方式正是volume plugin的实现方式,容器直接mount宿主机的目录,避免通过容器网络访问外部存储,性能肯定会更高。

Q:如何具体定制volume_plugin?不同主机挂同一个lun,这样可以直接给volume 使用  同一业务 只要块存储速度可以那就不会影响业务 包括峰值和低值的应用 只是增加中间处理容器的数量,这样可不可行?

A:为了方便实现volume plugin,docker提供go-plugins-helper包(https://github.com/docker/go-plugins-helpers),提供基础的功能,仅仅需要实现一个接口volume.Driver,并启动http server便可。例子:GlusterFS就是使用这个包,基于glusterfs提供volume。https://github.com/calavera/docker-volume-glusterfs;

不同主机挂同一个lun,再格式化文件系统,每个主机都由自身的文件系统元数据并不会立刻flush到块设备,所以多个主机挂同一个lun并不可行。

Q:对于一个容器,每次run都会下载大量的数据,如果多大50GB的话,如何去处理?

A:将大量的数据存储在外部共享存储系统中,通过块或文件的方式挂载给容器使用,就可避免加载大量数据到本地。

Q:对于容器存储也好或虚拟机、云主机存储也好,都是大同小异,看你业务用途如何,再根据现有资源来决定是块存储还是分布式文件或是对象存储?

A:确实存储接口并没有什么根本性的改变,容器和虚拟机在存储的角度来看最大的区别就是容器中运行的是应用,而虚拟机运行的是操作系统,使得容器存储更加贴近应用,能够根据具体应用的特性提供更合适的存储服务。

Q:假如有一个lun,要对应一个host上的很多的container,我是把所有的container mount 到同一个目录的不同子目录速度快,还是先对这个lun进行分区格式化,然后在不同的container对不同的分区速度快呢?

A:把所有的container mount 到同一个目录的不同子目录,表示多个进程对应1个文件系统;先对这个lun进行分区格式化,然后在不同的container对不同的分区,表示1个进程对1个文件系统;对于非IO密集型的进程,应该是后者更快,每个文件系统都带有cache,所以性能会更高一些。而对于IO密集型的进程,估计性能差别不大。

PPT | Docker定义存储-让应用无痛运行的更多相关文章

  1. 四个修改Docker默认存储位置的方法

    方法一.软链接 默认情况下Docker的存放位置为:/var/lib/docker 可以通过下面命令查看具体位置: sudo docker info | grep "Docker Root ...

  2. docker容器存放目录磁盘空间满了,转移数据修改Docker默认存储位置

    原文:docker容器存放目录磁盘空间满了,转移数据修改Docker默认存储位置 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/qq_3767485 ...

  3. [转帖]四个修改Docker默认存储位置的方法

    四个修改Docker默认存储位置的方法 https://blog.51cto.com/forangela/1949947 易改乾坤关注0人评论27435人阅读2017-07-22 09:18:48   ...

  4. docker从零开始 存储(五)存储驱动介绍

    关于存储驱动程序 要有效地使用存储驱动程序,了解Docker如何构建和存储镜像以及容器如何使用这些镜像非常重要.您可以使用此信息做出明智的选择,以确定从应用程序中保留数据的最佳方法,并避免在此过程中出 ...

  5. docker从零开始 存储(一)存储概述

    管理Docker中的数据 默认情况下,在容器内创建的所有文件都存储在可写容器层中.这意味着: 当该容器不再运行时,数据不会持久存在,如果另一个进程需要,则可能很难从容器中获取数据. 容器的可写层紧密耦 ...

  6. Docker 持久存储介绍(十三)

    目录 一.Docker 数据存储 二.Bind mount 1.详细介绍 2.如何使用 -v or --volume 语法 --mount 语法 两者区别 3.使用场景 4.使用案例 存在目录 bin ...

  7. Centos7——docker持久化存储和卷间状态共享(笔记)

    docker持久化存储和卷间状态共享(笔记)  本章介绍 存储卷的介绍 存储卷的两种类型 宿主机好额容器之间如何共享数据 容器之间如何共享数据 存储卷的声明周期 存储卷之间的数据管理和控制模式 就像在 ...

  8. docker aufs存储驱动文件系统

    Docker aufs存储驱动layer.diff.mnt目录的区别 /var/lib/docker/aufs layer子目录: 镜像.镜像历史列表.容器.容器INIT分别有对应的文件.文件名和di ...

  9. docker容器存储

    写在前面 我们在上篇学习了容器网络,对容器网络驱动bridge工作原理做了较为详细的介绍,今天小作文一起看看容器中另一个关键域-存储. 容器的存储可以分为两大类: 一种是与镜像相关的即我们在<d ...

随机推荐

  1. 二分查找(Binary Search)的递归和非递归

    Binary Search 有时候我们也把它叫做二进制查找 是一种较为高效的再数组中查找目标元素的方法 我们可以通过递归和非递归两种方式来实现它 //非递归 public static int bin ...

  2. BZOJ 1061:志愿者招募(单纯型)

    题目链接 题意 中文题意. 思路 单纯型模板题. 单纯型用来解决线性规划问题. 留坑待填. 算法思路 好长 模板 论文 卿学姐视频 #include <bits/stdc++.h> usi ...

  3. POJ 1113:Wall(凸包)

    http://poj.org/problem?id=1113 Wall Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 346 ...

  4. os.path.dirname(__file__)

    os.path.dirname(__file__) 返回脚本的路径 描述: 必须实际存在的.py文件,如果直接在命令行执行,则会引发异常NameError: name 'file' is not de ...

  5. VS2013日常使用若干技巧+快捷键

    1.注释的方法 1)sqlserver中,单行注释:— —   多行注释:/* 代码  */ 2)C#中,单行注释://    多行注释:/* 代码  */ 3)C#中多行注释的快捷方式:先选中你要注 ...

  6. 百度小程序自定义通用toast组件

    百度小程序Toast组件 author: @TiffanysBear 百度小程序自定义通用toast组件 BdToast百度小程序自定义通用组件-github地址 需求 手百小程序的toast仅支持在 ...

  7. wussUI v1.0.0小程序UI组件库 第一期开发已完成

    经过了两个月不到的开发时间,我们phonycode团队顺利的发布了小程序的UI组件库 wuss-ui 的第一个版本.目前大体预览如下 介绍 wussUI 现在有大概27个组件左右, 目前基础组件都有了 ...

  8. 【06】Jenkins:Gitlab 自动触发构建以及钉钉通知

    写在前面的话 在某些时候,我们希望能够实现这样一个功能,当用户提交东西到 gitlab 上的时候,希望它能够自动触发构建,发布到我们需要的环境. 目前我们内部有做类似的需求:产品提交原型到 gitla ...

  9. ElasticStack学习(十):深入ElasticSearch搜索之QueryFiltering、多/单字符串的多字段查询

    一.复合查询 1.在ElasticSearch中,有Query和Filter两种不同的Context.Query Context进行了相关性算分,Filter Context不需要进行算分,同时可以利 ...

  10. c语言进阶2-变量的作用域与无参函数

    一.       什么是函数 函数是具有特定功能的模块.可以说一个完整的程序其实是由多个函数共同完成的.C语言的全部工作都是由程式各样的函数完成的,所以也把C语言称为函数式语言.使用模块化设计可能 使 ...