当 docker-compose 的主机 ports 是区间时, up 起来就很慢,求解

2023-03-07 22:24:35 +08:00
 raw0xff
version: "3"
services:
  node:
    build: .
    image: alpine
    ports:
      -  "58001-58100:9999"
    scale: 20

当 ports 是区间时,每个 node 到 start 就很慢。 当 ports: "9999"只指定 node 端口时,快是快了,但是偶尔会有 node 的 port not bound 。 当 ports: "58888:9999"时不能--scale 。。。(废话)

求问大佬,是我使用姿势不对吗?

976 次点击
所在节点    Docker
5 条回复
yinmin
2023-03-29 21:07:02 +08:00
node 容器是给其它容器使用的吧?

docker 同一个虚拟内网里的容器可以相互直接访问,无需 port 。

新建一个虚拟内网,把 node 及相关容器都放这个内网里,你就可以把 node 容器里的 ports 参数删除掉,启动速度就快了。
raw0xff
2023-03-30 14:54:28 +08:00
@yinmin 需要从外部访问虚拟内网的容器服务,所以需要每个 IP 的固定端口绑定一个我物理机的本地随机端口。
yinmin
2023-03-30 17:26:05 +08:00
我不清楚你 node 里跑什么应用。从原理上,起多个容器是为了在宿主机上运行多个进程跑并发。有些软件有 workers 概念,在一个容器里启动多个进程跑并发。例如:Flask 的 Gunicorn 的 workers 参数。

是不是可以换一个思路,在一个容器里启动多个 workers ,而不是使用 scale 方式启用多个容器?
yinmin
2023-03-30 17:53:00 +08:00
另外,启动 1 个容器大概需要 0.2 秒~0.5 秒,你使用 scale 同时启动 20 个容器,慢一点是正常的。
raw0xff
2023-03-30 20:22:46 +08:00
@yinmin 我主要是模拟对等节点,目前启动一次 20 个节点六七秒钟,还能忍,调试好了就不用了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/922045

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX