Docker – 我的MySQL数据库应该在容器的内部还是外部?

我正在Docker上build立我的第一个生产服务器,但我不确定我的MSQL数据库应该在哪里。 数据库应该在容器外面还是在外面? 我以前读过一些文章/post,它应该住在外面,所以如果你必须启动一个新的容器或图像,没有什么变化,但我不确定这是否正确。 在容器内部或外部是否有速度/性能差异?

性能:默认情况下,Docker容器使用虚拟networking接口,请参阅Docker Advancednetworking文档 。 这只是轻微的速度开销。 尽pipe如此,根据您的预期负载,您可能希望将数据库容器绑定到主机networking,或者根本没有对数据库进行dockerize。

关于数据持久性:如果您正在使用卷或容器容器,则您的数据将位于容器外部,并且也可以由任何新的容器装入。 这里不用担心

关于是否使用数据库容器(我认为):目前stream行无国籍和可互换的应用程序,这意味着你可以扔掉过时的服务,并用新的容器replace它们。 虽然这对于经常更新的微服务是非常有意义的…你是否真的需要这样的相对长寿命的服务,如数据库? 是的,Docker仍然有助于包含依赖关系并更快地发布内容,但是还有其他select,比如Ansible提供的虚拟机。 最后,它取决于你的用例最简单的。

  1. 这些是我们的数据库pipe理员的一些责任:

    • build立和维护健全的备份和恢复政策和程序
    • 实施和维护数据库安全性(创build和维护用户和angular色,分配权限)
    • 执行数据库调整和性能监视
    • 执行应用程序调优和性能监控
    • 设置和维护文档和标准
    • 计划增长和变化(能力计划)

如果我需要这些服务,我使用容器外部的数据库并由专家托pipe。

  1. 如果数据需要被其他应用程序访问,我在集装箱外的集中数据库服务器上使用数据库,并由专家托pipe。