Kee*_*eto 38 database virtualization docker
我可以理解dockerizing无状态服务背后的优势,例如Web服务器,应用程序服务器,负载平衡器等......如果您在一组计算机上运行这些服务,那么很容易以较低的开销移动这些容器.我不明白的是容器化数据库背后的目的是什么?数据库连接到在特定硬盘中持久存在的数据卷.由于状态,实际移动数据库容器并不容易,效率也不高.所以任何人都可以看到为什么Docker化数据库可能有用吗?
小智 28
"所以任何人都可以看到为什么对数据库进行docker化会有用吗?"
很好的问题基托.容纳数据库的主要原因之一是,您可以为整个应用程序提供相同的一致环境,而不仅仅是无状态部分,跨开发,分段和生产.一致的环境是docker的承诺之一,但是当您的数据库不在此模型之外时,在测试中存在很大的差异.此外,通过容纳您的数据库以及应用程序的其余部分,您更有可能在托管服务提供商之间移动整个应用程序(例如从AWS到Google Compute).例如,如果您使用Amazon RDS,即使您可以将Web节点移动到Google,也无法移动数据库,这意味着您严重依赖于云提供商.
容纳数据服务的另一个原因是性能.对于服务提供商(所有数据库作为服务产品 - 例如机架式云数据库 - 在容器中运行)尤其如此,因为容器允许您提供使用虚拟化无法实现的服务保证,并且每个物理机器运行一个数据库是在经济上不可行.您可能没有运行数据库托管服务,但如果您在裸机上运行并希望使用容器进行进程隔离而不是VM,则这种类比具有类似的意义.您将获得更好的数据库性能,因为您在VM中运行数据库时会遇到众所周知的i/o命中.
我不是说你应该将你的数据库容器化,但这些是为什么它有意义的原因.
完全披露,我为clusterhq工作,这是Mark O'connor在他的回答中提到的新项目.我们有一个名为Flocker的开源项目,它使主机之间的数据库及其卷的迁移变得更加容易,因此我在上面提到的好处并没有完全超出您在问题中提出的负面影响.
Mar*_*nor 12
不确定我是否同意你对效率的评论......与本机安装相比,下载和运行数据库容器要容易得多.docker文档描述了如何在有状态容器及其数据之间实现干净的逻辑分离:
但是......你是正确的,有状态的容器将绑定到它的主机服务器,除非有一些机制来移植数据.
一个显而易见的解决方案是在可能正在运行数据库的所有主机上安装共享存储卷.
下面的文章讨论了一个非常创新的解决方案,其中使用类似bittorrent的客户端在主机之间复制数据容器.
最后,一个名为flocker的新项目试图通过管理有状态容器及其关联的ZFS卷来解决此问题:
| 归档时间: | 
 | 
| 查看次数: | 9784 次 | 
| 最近记录: |