• 技术文章 >运维 >Docker

    数据库不适合docker及容器化的原因

    VV2020-04-15 10:01:07原创984

    数据库不适合docker及容器化的几大原因:

    1、数据不安全

    即使你要把 Docker 数据放在主机来存储 ,它依然不能保证不丢数据。 Docker volumes 的设计围绕 Union FS 镜像层提供持久存储,但它仍然缺乏保证。

    使用当前的存储驱动程序,Docker 仍然存在不可靠的风险。 如果容器崩溃并数据库未正确关闭,则可能会损坏数据。

    2、运行数据库的环境需求

    常看到 DBMS 容器和其他服务运行在同一主机上。 然而这些服务对硬件要求是非常不同的。

    数据库(特别是关系型数据库)对 IO 的要求较高。 一般数据库引擎为了避免并发资源竞争而使用专用环境。如果将你的数据库放在容器中,那么将浪费你的项目的资源。 因为你需要为该实例配置大量额外的资源。 在公有云,当你需要 34G 内存时,你启动的实例却必须开 64G 内存。在实践中,这些资源并未完全使用。

    怎么解决? 您可以分层设计,并使用固定资源来启动不同层次的多个实例。 水平伸缩总是比垂直伸缩更好。

    3、网络问题

    要理解 Docker 网络,您必须对网络虚拟化有深入的了解。也必须准备应付好意外情况。你可能需要在没有支持或没有额外工具的情况下,进行 bug 修复。

    4、状态

    在 Docker 中打包无状态服务是很酷的,可以实现编排容器并解决单点故障问题。 但是数据库呢? 将数据库放在同一个环境中,它将会是有状态的,并使系统故障的范围更大。下次您的应用程序实例或应用程序崩溃,可能会影响数据库。

    5、额外的隔离对数据库是不利的

    其实我在第二点和第三点原因中提到了这一点。 但我把这个列为单独的原因,因为我想再次强调这一事实。 我们拥有的隔离级别越多,我们获得的资源开销就越多。 相比专用环境而言,容易水平伸缩可以使我们得到更多的好处。 然而在 Docker 中水平伸缩只能用于无状态计算服务,而不是数据库。

    我们没有看到任何针对数据库的隔离功能,那为什么我们应该把它放在容器中?

    推荐教程:docker教程

    以上就是数据库不适合docker及容器化的原因的详细内容,更多请关注php中文网其它相关文章!

    声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理
    专题推荐:数据库 docker 容器化
    上一篇:如何通过命令行查看docker服务是否已启动 下一篇:本机浏览器如何访问docker容器的内容
    大前端线上培训班

    相关文章推荐

    • docker容器如何升级• docker无法删除镜像怎么解决• docker镜像如何导出• 如何在linux环境下安装docker

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网