Docker 生产中每个主机应该有多少个容器?服务应该如何分割?
我试图更好地理解Docker的好处,但我并不真正理解它在生产中是如何工作的 假设我有一个web前端、一个RESTAPI后端和一个db。一共有3个容器 假设我想要3个前端,5个后端和7个数据库。(小问题:拥有比后端服务器更少的dbs有意义吗?) 现在,考虑到上面的场景,如果我将它们都打包在同一台主机上,那么我将获得高效使用主机资源的好处,但是当该机器出现故障或具有网络分区时,我就是DOA 如果我将它们划分为每个主机一个完整的应用程序(即1个FE、1个BE和1个DB),并在它们自己的主机上放置额外的容器,我可以在高效使用资源方面获得一些优势,但在我看来,当我有一个网络分区时,我仍然会损失很多,因为它会占用多个服务 因此,我几乎倾向于这样一个结论,即我应该为每个主机放入一个容器,但这意味着我使用资源的效率非常低,那么容器在生产中的好处是什么?我的意思是,一个操作系统在存储容量上可能是每台机器多出几Gig,但大多数云提供商至少为您提供10 Gig的存储空间。让我们面对现实,rest api后端或web前端甚至不会接近10 Gig…甚至包括操作系统 所以,在所有这些之后,我试图找出我是否错过了容器的意义?将一个应用程序的所有容器都放在一台主机上的好处主要与测试和开发的好处有关吗 我知道在不同的供应商/机器之间轻松移动容器会带来好处,但在大多数情况下,我个人并不认为这是一个巨大的收益,因为这是可以通过图像实现的Docker 生产中每个主机应该有多少个容器?服务应该如何分割?,docker,containers,Docker,Containers,我试图更好地理解Docker的好处,但我并不真正理解它在生产中是如何工作的 假设我有一个web前端、一个RESTAPI后端和一个db。一共有3个容器 假设我想要3个前端,5个后端和7个数据库。(小问题:拥有比后端服务器更少的dbs有意义吗?) 现在,考虑到上面的场景,如果我将它们都打包在同一台主机上,那么我将获得高效使用主机资源的好处,但是当该机器出现故障或具有网络分区时,我就是DOA 如果我将它们划分为每个主机一个完整的应用程序(即1个FE、1个BE和1个DB),并在它们自己的主机上放置额外的
对于生产中的容器,我还缺少其他好处吗?测试和开发的主要好处是什么?(我是否认为生产中的容器是错误的) 这取决于您在容器中运行的应用程序的类型。从我的头脑中,我可以想出几种不同的方法来看待这个问题:
- 您的应用程序磁盘空间大吗
- 是否需要在多台计算机上保存应用程序失败
- 您能否在同一主机上运行不同应用程序的多个不同实例而不降低它们的性能
- 您是否使用类似或的软件来处理您的机器
我认为,即使没有容器,大多数问题的答案都很有趣。容器可能会让您不再考虑单个主机,但您仍然需要自己决定和测量主机的负载。注意:这个问题非常广泛,可能会占据整本书的篇幅,但我将给出一些说明 集装箱的好处 容器令人兴奋的部分不是它们在单个主机上的使用,而是它们在大型集群上连接的主机之间的使用。不要将您的机器视为独立的docker主机,而是将其视为承载容器的资源池 容器本身并不是突破性的(即Docker的CTO在最后一次DockerCon上声明“没有人关心容器”),但与最先进的调度程序和容器编排框架相结合,它们成为处理生产级软件的非常强大的抽象 关于它也适用于虚拟机的论点,是的,它确实适用,但是容器比虚拟机有一些技术优势(请参阅:),这使它们更易于使用 在单个主机上 在单个主机上,您可以从容器中获得的好处包括(除其他外):
- 用作开发环境,模拟真实生产集群上的行为
- 独立于主机的可复制构建(便于共享)
- 测试新软件时,不必使用日常使用的软件包使机器膨胀
- 创建两个docker主机,并通过脚本或使用docker compose等解决方案“手动”运行/连接容器。监控服务/容器的生命周期由您负责,您应该准备好处理服务停机时间
- 让容器协调器处理所有事情,并监控服务的生命周期,以更好地应对故障