Docker并行操作限制

rmo*_*h21 14 concurrency docker dockerfile docker-registry

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

例如,如果您使用Docker pull/push命令进行操作,以便它们同时拉/推不同的图像,那么并行推/拉的数量就是上限

或者

在一个终端上你做docker pull ubuntu在另一个你做docker pull httpd等 - Docker会支持什么限制?

BMi*_*tch 15

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)
Run Code Online (Sandbox Code Playgroud)

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

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

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

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


Dan*_*ruz 12

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

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

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

{
    "max-concurrent-uploads": 1,
    "max-concurrent-downloads": 1
}
Run Code Online (Sandbox Code Playgroud)

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

  • 对于 Mac 上的 Docker Desktop,您需要转到“首选项 | ” Docker Engine` 并在那里指定配置 (4认同)
  • 很高兴知道。我回答是因为接受的太长了 (3认同)
  • 应该是公认的答案,这更容易遵循。 (2认同)