原文地址:http://www.tuicool.com/articles/6VbqeqQ

原文为英文,以下是笔者的个人总结。

此处的DB包括但不限于Redis、ElasticSearch。

1、数据安全
Docker程序中断时,如果容器内的DB没有被正常关闭,可能造成数据丢失
甚至如果容器损坏,内部的DB数据文件可能无法恢复,丢失全部数据

2、额外的硬件资源使用
DB在内存使用、磁盘I/O控制等方面需要使用额外的资源,除了数据文件之外,DBMS也会占用容器的硬件资源
如果有多个数据库,多个容器内的多个DBMS比同一台物理机上,一个DBMS下的多个数据库占用的资源更多

3、网络问题
Docker使用了网络虚拟化技术,如果是部署在虚拟机环境下的Docker,可能会引起DB额外的问题

4、DB是有状态的
Docker本身是stateless的,而数据却是有状态的,不同时间写入DB的不同数据让DB也成了有状态的
因此容器的损坏可能影响业务工作流程

5、与Docker的特点不合
Docker的特点:
- 便于安装
- 便于部署
- 便于平行展开
- 适用于不同的系统环境

而DB不需要频繁的安装和部署,即使存在备份,也不需要在每个环境中都有一份(这样也会带来额外的同步负担),而且考虑到兼容性,DB本身也不会经常更新版本

6、DB层不需要安装在“隔离室”中
安装在高于系统环境的虚拟机Docker中,会带来额外的硬件资源消耗和网络问题

7、云平台的版本更新问题
Docker中的DB导致如果要更新云平台上的容器,就需要将容器中DB的数据导入新容器的DB中,再进行更新
这与使用容器,便捷更新的初衷不符

不把DB放进容器的理由的更多相关文章

  1. FMDB将对象放进数据库[一]

    @import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...

  2. 新建childTest文件夹,里面依然放进我们需要的.py文件即可

    一.模块 我们编写文件:a.py,放在C:\Python34\Lib\sit-packages下,里面写上一句代码为: print('this is a') 之后我们就可以在我们的代码里面引用a.py ...

  3. Dictionary解析json,里面的数组放进list,并绑定到DataGridView指定列

    Dictionary解析json,1.根据json建立相应的实体类,json里面的数组形式放进list集合2.取list中的数据,将相应的数据绑定到DataGridView,如下:循环(动态添加一行数 ...

  4. 如果将彩色图像和灰度图像一起放进 CNN 中去,会是什么结果?

    如果将彩色图像和灰度图像一起放进 CNN 中去,会是什么结果? 今天,坑爹的实验,我处理 SUN397 的时候,忘记去掉灰度图了,结果,利用微调后的 model 提取 feature,悲剧的发现,无论 ...

  5. FMDB将对象放进数据库[二](使用runtime)

    @import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...

  6. 将dll放进exe[.Net]

    原文:将dll放进exe[.Net] 两种方案: 1.使用ILMerge工具. 缺点:需离开工程,使用第三方工具(ILMerge). 2.将dll作为Resource放进exe,exe执行时动态加载( ...

  7. MPC8313ERDB不新鲜pkg包裹,把文件放进Ramdisk

    MPC8313ERDB不新鲜pkg包裹,把文件放进Ramdisk 经ltib编译器生成rootfs.ext2.gz.uboot它可以直接uboot采用.假设我们编写了相应的外部文件把Ramdisk往里 ...

  8. Win7里面如何把这一堆图标放进那个右下角的小三角框框

    Win7里面如何把这一堆图标放进那个右下角的小三角框框.. Win7里面如何把这一堆图标放进那个小框框:1.在任务栏空白处右击,点击属性:2.在属性中的通知区域-->点击自定义按钮:3.去除勾选 ...

  9. 请将你的App签名文件放进保险箱

    这是一篇以我自己的实际经历写的一篇文章. 当下移动开发正值火爆,由于门槛低,任何一个程序员都可以比较容易的进入移动开发领域,作为App或者游戏等移动开发者,当你开发完成一个作品后,准备上线时,需要对你 ...

随机推荐

  1. Django 通过APNS推送消息

    最近手上一个项目需要通过APNS向app推送消息,由于后端采用drf框架,在github上找了好多模块,最终发现pzanitti大神的推送模块 django-push-notifications 比较 ...

  2. Mina源码研究

    目录 1. NioSocketAcceptor初始化源码研究 1.1 类图 1.2 方法调用时序图 1.3 初始化NioSocketAcceptor 1.4 SimpleIoProcessorPool ...

  3. python处理数据(二)

    处理PDF文件 PyPDF2简介 作为 PDF 工具包构建的纯 python 库. 它可以:提取文档信息(标题,作者,... ...)一页一页地分割文件一页一页地合并文件裁剪页面将多个页面合并成一个页 ...

  4. 《Python核心编程》笔记

    1 python是大小写敏感的 2 遍历一个字典的键值: for a in dict_obj.keys(): print a 3 列表解析功能可以让代码很简洁,比如:squared = [x ** 2 ...

  5. MySQL半同步主从.md

    MySQL Semisynchronous Replication 复制架构衍生史 1.普通的replication,异步同步. 搭建简单,使用非常广泛,从mysql诞生之初,就产生了这种架构,性能非 ...

  6. 2016-3-19日小结:scrollTop

    <div id="div1" style="padding: 0; position:absolute;width: 200px;height: 200px;< ...

  7. BZOJ4517:[SDOI2016]排列计数(组合数学,错排公式)

    Description 求有多少种长度为 n 的序列 A,满足以下条件: 1 ~ n 这 n 个数在序列中各出现了一次 若第 i 个数 A[i] 的值为 i,则称 i 是稳定的.序列恰好有 m 个数是 ...

  8. Kubernetes 初探

    一.容器: 1. 容器是运行一个或一组进程的方法,使得这些进程和主机上其他进程相隔离 2. 容器类似于虚拟机,但不同于虚拟机 容器                                    ...

  9. 第二部分 OpenStack安装与配置

    第二部分 OpenStack安装与配置 一.引言   本章内容讲解如何在3台物理机上搭建最小化云平台,这3台机器分为称为Server1.Server2和Client1,之后的各章也是如此.Server ...

  10. selenium + python自动化测试unittest框架学习(六)分页

    接触的项目分页的形式是以下形式: 想要获取总页数后,遍历执行翻页的功能,但由于分页是以javascript方法实现的,每次点击确定按钮后,页面就回刷新,webelement元素过期无法遍历下一个进行翻 ...