博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
不把DB放进容器的理由
阅读量:4687 次
发布时间:2019-06-09

本文共 715 字,大约阅读时间需要 2 分钟。

原文地址:

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

此处的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中,再进行更新
这与使用容器,便捷更新的初衷不符

 

转载于:https://www.cnblogs.com/harelion/p/6376699.html

你可能感兴趣的文章
day07
查看>>
【Android开发:自定义控件系列二】关于PopupWindow的注意点
查看>>
HTML——使用表格进行页面布局
查看>>
字符串统计 连续的某个字符的数量 1.1.4
查看>>
JMS
查看>>
gulpfile 压缩模板
查看>>
JAVA知多少
查看>>
Kruskal算法(转)
查看>>
CSS3 Media Queries实现响应式布局
查看>>
【34.14%】【BZOJ 3110】 [Zjoi2013]K大数查询
查看>>
【 henuacm2016级暑期训练-动态规划专题 A 】Cards
查看>>
第五篇:白话tornado源码之褪去模板的外衣
查看>>
设备常用框架framework
查看>>
bootstrap模态框和select2合用时input无法获取焦点(转)
查看>>
快速转移数据的要领
查看>>
windows情况下的oracle效力
查看>>
*nix-style:定制 bash 提示符
查看>>
Informix IDS 11系统解决(918查验)认证指南,第 7 部分: IDS复制(7)
查看>>
解决Charles Response 中文乱码
查看>>
Spring Boot 分布式Session状态保存Redis
查看>>