我在docker上设置我的第一个生产服务器,但我不确定我的MSQL数据库应该在哪里。数据库应该在容器外还是在容器内?我之前读过一些文章/帖子,它应该住在外面,所以如果你不得不启动一个新的容器或图像,没有任何改变,但我不确定这是否正确。将容器放在容器内部或外部是否有任何速度/性能差异?
答案 0 :(得分:1)
关于性能:默认情况下,Docker容器使用虚拟网络接口,请参阅Docker Advanced networking documentation。这只是一个轻微的速度开销。但是,根据您的预期负载,您可能希望将数据库容器绑定到主机网络,或者根本不要将数据库停靠。
关于数据持久性:如果您使用volumes or volume containers,您的数据将存在于容器之外,并且也可以通过任何新容器进行安装。不用担心。
关于是否使用容器进行数据库管理(我的观点):目前流行的是将无状态和可互换的应用程序容器化,这意味着您可以简单地丢弃过时的服务并用新的容器替换它们。虽然这对于经常更新的微服务来说真的很有意义......你真的需要这个用于数据库等相对长期存在的服务吗?是的,Docker仍然有助于更快地包含依赖项和发布内容,但还有其他替代方案,例如Ansible-provisioned VM。最后,它取决于您的用例最简单的内容。
答案 1 :(得分:1)
以下是我们的数据库管理员的一些职责:
如果我需要这些服务,我会使用容器外的数据库并由专家托管。