Docker并行操作限制

时间:2017-04-18 18:25:50

标签: docker concurrency dockerfile docker-registry

您可以执行并行Docker推/拉的数量限制吗?

  

E.g。如果您使用Docker pull / push命令进行操作   同时拉/推不同的图像是什么   并行推/拉数的上限

或者

  

在一个终端上,您可以使用docker将ubuntu拉到另一个终端上   拉httpd等 - Docker支持的限制是什么?

3 个答案:

答案 0 :(得分:12)

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文件句柄会有一些开销,我希望每次推拉都会打开多个句柄,一个用于远程连接,另一个用于本地文件存储。

为了加剧这种复杂性,图像的每次推拉将打开多个连接,每层一个,直到并发限制。因此,如果你运行十几个并发拉动,你可能有50-100个潜在的层。

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

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

答案 1 :(得分:3)

选项在配置文件中设置(在基于Linux的操作系统中,该文件位于路径/etc/docker/daemon.json中)

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

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

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

重新启动守护程序:sudo service docker restart

答案 2 :(得分:0)

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

Docker for Windows Docker Engine settings