【问题标题】:Docker parallel operations limitDocker 并行操作限制
【发布时间】:2017-09-14 17:33:59
【问题描述】:

您可以执行的并行 Docker 推送/拉取数量是否有限制?

例如如果你线程 Docker 拉/推命令,使得它们是 同时拉/推不同的图像会是什么 并行推/拉数上限

或者

在一个终端上执行 docker pull ubuntu 在另一个终端上执行 docker 拉 httpd 等 - Docker 支持的限制是什么?

【问题讨论】:

    标签: docker concurrency dockerfile docker-registry


    【解决方案1】:

    选项在配置文件中设置(基于 Linux 的操作系统位于路径:/etc/docker/daemon.json 和 C:\ProgramData\docker\config\daemon.json 在 Windows 上)

    打开/etc/docker/daemon.json(如果不存在,创建)

    添加值(用于推/拉)并设置并行操作限制

    {
        "max-concurrent-uploads": 1,
        "max-concurrent-downloads": 1
    }
    

    重启守护进程:sudo service docker restart

    【讨论】:

    • 应该是公认的答案,这更容易理解。
    • 很高兴知道。我回答是因为接受的太长了?
    • Mac 上的 Docker Desktop,你需要去Preferences | Docker Engine 并在那里指定配置
    【解决方案2】:

    docker 守护进程 (dockerd) 有两个标志:

      --max-concurrent-downloads int          Set the max concurrent downloads for each pull
                                              (default 3)
      --max-concurrent-uploads int            Set the max concurrent uploads for each push
                                              (default 5)
    

    上限可能取决于您允许该进程打开的文件数 (ulimit -n)。其他 docker 文件句柄会有一些开销,我希望每次 push 和 pull 都会打开多个句柄,一个用于远程连接,另一个用于本地文件存储。

    更复杂的是,图像的每次推送和拉取都会打开多个连接,每层一个,直到并发限制。因此,如果您运行十几个并发拉取,您可能有 50-100 个潜在层需要拉取。

    虽然 docker 确实允许增加这些限制,但有一个实际限制,如果打开更多并发连接不是负回报,您会看到回报递减。假设远程注册表的带宽是有限的,更多的连接将简单地分割该带宽,并且 docker 本身将等到第一层完成后才开始解包该传输。此外,任何中止的 docker pull 或 push 都将丢失层的任何部分传输,因此您增加了需要通过更多并发连接重新传输的潜在数据。

    默认限制非常适合开发环境,如果您发现需要调整它们,我建议您在尝试找到最大并发会话数之前测量性能改进。

    【讨论】:

    • 谢谢 - 这很有帮助。话虽如此,但如果您必须测试 Docker Registry 端点以查看它的可扩展性以及它可以支持多少并发连接,或者总体上它在压力下的性能如何——那么摆弄这些参数并点击它是否明智?来自多个端点的 Docker 注册表?如果您也能对这个话题有所了解,我们将不胜感激。
    • 如果您同时控制注册表、网络和端点,则可以对此进行优化。但我担心努力的回报会很小,除非你的用例不寻常。大多数人会看到优化图像本身的更多好处。
    • 对于 Windows 用户,这可以通过在 C:\ProgramData\Docker\config 中创建一个 daemon.json 文件来完成。见docs.docker.com/engine/reference/commandline/dockerd/…
    【解决方案3】:

    对于使用 Docker for Windows 和 WSL2 的任何人: 您可以(并且应该)在“设置”选项卡上设置选项:

    Docker for Windows Docker Engine settings

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多