不把DB放進容器的理由

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

原文爲英文,如下是筆者的我的總結。安全

此處的DB包括但不限於Redis、ElasticSearch。網絡

一、數據安全
Docker程序中斷時,若是容器內的DB沒有被正常關閉,可能形成數據丟失
甚至若是容器損壞,內部的DB數據文件可能沒法恢復,丟失所有數據less


二、額外的硬件資源使用
DB在內存使用、磁盤I/O控制等方面須要使用額外的資源,除了數據文件以外,DBMS也會佔用容器的硬件資源
若是有多個數據庫,多個容器內的多個DBMS比同一臺物理機上,一個DBMS下的多個數據庫佔用的資源更多ui


三、網絡問題
Docker使用了網絡虛擬化技術,若是是部署在虛擬機環境下的Docker,可能會引發DB額外的問題內存


四、DB是有狀態的
Docker自己是stateless的,而數據倒是有狀態的,不一樣時間寫入DB的不一樣數據讓DB也成了有狀態的
所以容器的損壞可能影響業務工做流程資源


五、與Docker的特色不合
Docker的特色:
- 便於安裝
- 便於部署
- 便於平行展開
- 適用於不一樣的系統環境部署

而DB不須要頻繁的安裝和部署,即便存在備份,也不須要在每一個環境中都有一份(這樣也會帶來額外的同步負擔),並且考慮到兼容性,DB自己也不會常常更新版本get


六、DB層不須要安裝在「隔離室」中
安裝在高於系統環境的虛擬機Docker中,會帶來額外的硬件資源消耗和網絡問題同步

七、雲平臺的版本更新問題Docker中的DB致使若是要更新雲平臺上的容器,就須要將容器中DB的數據導入新容器的DB中,再進行更新這與使用容器,便捷更新的初衷不符

相關文章
相關標籤/搜索