单个容器与多个容器

Yas*_*ash 5 docker

我的系统中有 2 个进程 P1 和 P2,它们通过 TCP 相互通信非常频繁。因此,它们都托管在同一个 VM 上。我正在考虑消除虚拟机,而是将我的系统托管在物理机上的容器中。如果我 dockerize 我的系统,我有两个选择:

  1. 容器 1 包含 P1,容器 2 包含 P2。这两个容器将被链接。P1 和 P2 之间的通信将跨越容器边界。
  2. 一个单独的容器将包含 P1 和 P2。通信将保留在容器内。

请指导我上述两种方法的优缺点。
方法 1 中的通信延迟涉及的开销是多少?

Von*_*onC 2

一个容器中多个进程的主要问题是信号管理:如何(干净地)停止所有进程?

这就是“ PID 1 僵尸收割问题”,这就是为什么每当您必须管理多个进程时,像这样的基础映像phusion/baseimage-docker可以提供帮助。

更普遍的问题是微服务解耦问题:如果 P1 和 P2 都是有状态的并且相互依赖,那么将它们保留在同一个容器中是有意义的。

通信延迟方面涉及的开销是多少

这取决于所涉及的进程类型,但开销很小,因为两个进程都在同一 docker 主机上运行(即使它们位于不同的容器中)