V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
raw0xff
V2EX  ›  Docker

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

  •  
  •   raw0xff · 2023-03-07 22:24:35 +08:00 · 949 次点击
    这是一个创建于 386 天前的主题,其中的信息可能已经有所发展或是发生改变。
    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 。。。(废话)

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

    5 条回复    2023-03-30 20:22:46 +08:00
    yinmin
        1
    yinmin  
       364 天前
    node 容器是给其它容器使用的吧?

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

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

    是不是可以换一个思路,在一个容器里启动多个 workers ,而不是使用 scale 方式启用多个容器?
    yinmin
        4
    yinmin  
       364 天前
    另外,启动 1 个容器大概需要 0.2 秒~0.5 秒,你使用 scale 同时启动 20 个容器,慢一点是正常的。
    raw0xff
        5
    raw0xff  
    OP
       364 天前
    @yinmin 我主要是模拟对等节点,目前启动一次 20 个节点六七秒钟,还能忍,调试好了就不用了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3042 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 12:47 · PVG 20:47 · LAX 05:47 · JFK 08:47
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.