数据库如何适应Docker架构?

问题描述 投票:0回答:2

我在过去几年里听到很多关于docker的消息,但是我很难理解数据库部分是如何适应的。我知道应用程序和服务可以存在于一个包含二进制文件和所需库的docker容器中。 。但是数据库怎么样?

  1. 如果我有一个带有复制和BI的现有60千兆字节sql server数据库,我是否需要将所有数据移动到容器中?或只有数据库架构?
  2. 集成测试如何在这样的环境中运行?我一直听说你可以“旋转”容器内的数据库,运行测试并丢弃它。真?创建测试通过所需的整个架构和数据听起来有点复杂。
sql-server database docker
2个回答
0
投票

首先,数据库只不过是一个有状态的应用程序。 dockerize数据库的方法与dockerizing应用程序没有什么不同。您仍然需要在容器中复制二进制文件和依赖项。

现在,在容器内运行数据库将隔离容器文件系统中的数据库。如果数据库需要当前数据,则必须将其移动/导入到容器中。将数据烘焙到容器中通常不是好的做法。容器图像最好保持不变和便携。最好在启动容器后将所需数据导入数据库。因此,建议启动一个新的db容器,并将当前数据库中的数据导入新数据库。

对于第二个问题,使用docker启动数据库非常简单。它主要减少运行一个docker run命令。此外,大多数流行的数据库,例如sql-server,已经是集装箱化的。这对于依赖于在运行时拥有数据库的集成测试非常有用。

传统上,依赖于数据库的集成测试是通过启动测试开始的某种内存数据库来处理的。这是必需的,因为在机器上旋转实际的数据库实例并不简单,并且需要在机器上安装数据库应用程序。这使得测试对新机器的可移植性降低。

Docker通过提供一种简单的方法来启动隔离的db实例来解决这些问题。通过运行非常少的命令,可以通过测试启动db实例,并在测试完成后进行清理。


0
投票

有三个选项可以使用数据启用数据库容器。首先,正如您所说,是“在容器中”(本地)数据。这适用于较小的数据集,最高可达2-3 GB,但由于存储消耗和创建副本所需的时间很短,因此对于60 GB环境而言是不切实际的。第二种选择是克隆(复制)数据并创建外部安装点。如果有足够的快速存储空间(闪存?),这可以很好地工作。第三是安装到快照或克隆的映像,这可以通过NetApp,Pure和其他SAN完成。在这种情况下,快照支持完整的读/写功能,并且应该很好地支持您的用例,但确实需要一些脚本来完成工作。

© www.soinside.com 2019 - 2024. All rights reserved.