Skip to main content
 首页 » 编程设计

docker之单个容器与多个容器

2025年02月15日14www_RR

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

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

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

    请您参考如下方法:

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

    那就是“PID 1 zombie reaping issue”,这就是为什么当你必须管理多个进程时,像 phusion/baseimage-docker 这样的基础镜像可以帮助。

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

    What is the overhead involved in terms of communication latency



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