gpt4 book ai didi

docker - Docker 主机上运行的容器数量是否有上限?

转载 作者:IT老高 更新时间:2023-10-28 12:37:46 27 4
gpt4 key购买 nike

基本上,标题说明了一切:在单个 Docker 主机上同时运行的容器数量是否有限制?

最佳答案

您可能会遇到许多系统限制(并可以解决),但有大量灰色区域取决于

  1. 您如何配置 docker 容器。
  2. 您在容器中运行的内容。
  3. 您使用的是什么内核、发行版和 docker 版本。

下图来自 boot2docker 1.11.1 vm 镜像,它基于 Tiny Core Linux 7 .内核是4.4.8

docker

Docker 创建或使用大量资源来运行容器,除了您在容器内运行的资源之外。

  • 将虚拟以太网适配器附加到 docker0 网桥(每个网桥最多 1023 个)
  • 挂载 AUFS 和 shm 文件系统(每个 fs 类型最多挂载 1048576 个)
  • 在图像顶部创建一个 AUFS 层(最多 127 层)
  • fork 1 个额外的 docker-containerd-shim 管理进程(平均每个容器约 3MB 和 sysctl kernel.pid_max)
  • Docker API/daemon 内部数据来管理容器。 (每个容器约 400k)
  • 创建内核cgroup和命名空间
  • 打开文件描述符(启动时每个正在运行的容器约 15 + 1 个。ulimit -nsysctl fs.file-max)

Docker 选项

  • 端口映射 -p 将为主机上的每个端口号运行一个额外的进程(在 1.12 之前的平均每个端口约 4.5MB,每个端口约 300k > 1.12 以及 sysctl 内核。 pid_max)
  • --net=none--net=host 将消除网络开销。

容器服务

总体限制通常取决于您在容器内运行的内容,而不是 docker 的开销(除非您正在做一些深奥的事情,例如测试可以运行多少个容器:)

如果您在虚拟机(node、ruby、python、java)中运行应用程序,内存使用可能会成为您的主要问题。

跨 1000 个进程的 IO 会导致大量 IO 争用。

尝试同时运行 1000 个进程会导致大量上下文切换(请参阅上面的 vm 应用程序了解垃圾收集)

如果您从 1000 个容器创建网络连接,则主机网络层将得到锻炼。

调整 linux 主机以运行 1000 个进程并没有太大区别,只是需要包含一些额外的 Docker 开销。

示例

运行 nc -l -p 80 -e echo host 的 1023 个 Docker busybox 镜像使用了大约 1GB 的内核内存和 3.5GB 的系统内存。

1023 plain nc -l -p 80 -e echo host 在主机上运行的进程使用大约 75MB 的内核内存和 125MB 的系统内存

连续启动 1023 个容器大约需要 8 分钟。

连续杀死 1023 个容器大约需要 6 分钟

关于docker - Docker 主机上运行的容器数量是否有上限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21799382/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com