数据库被设计为使用所有可用的内存、CPU和IO资源。在生产环境中,Docker是否适合用于数据库?有哪些好坏原因?
也许这个问题也适用于其他工具,如MOMs Apache Kafka、Apache ActiveMQ等。
也许这个问题也适用于其他工具,如MOMs Apache Kafka、Apache ActiveMQ等。
Docker不是一个完整的虚拟机(至少在Linux上运行时),它只是另一个进程,运行在与主机相同的内核上。此外,所有docker
容器进程都可以通过ps aux
在主机上看到。
Docker
唯一额外的负担就是在内核之上加载另一个操作系统,但实际上大多数容器都使用非常轻量级的东西,比如alpine
Linux,因此我认为这不必考虑。
从另一个角度来看,将数据库(或任何其他高负载服务)放入容器中具有以下优点:
k8s
)分散在节点之间)因此,今天部署容器化服务是正确的做法。
还有像运算符这样的东西,可以处理像数据库或分布式消息队列这样的状态应用程序的复杂需求。这些项目有时可能会相当新颖,但是我们可以在开箱即用时获得很多难以在裸机上编排的行为。
总的来说,在Kubernetes(或其他容器编排器)上运行类似数据库或消息队列之类的有状态应用程序是一个有争议的话题。像所有设计决策一样,它具有弹性、复杂性和可调试性方面的权衡。许多大型公司正在生产中使用它,因此它绝不是不合理的。