Docker并行操作限制

并行Docker推/拉的数量是否有限制?

例如,如果你使用Docker的pull / push命令,以便它们同时拉/推不同的图像,那么平行推/拉数的上限是多less

或者,

在一个terminal上你做docker拉你的Ubuntu的另一个你做docker拉httpd等 – 什么将是限制docker将支持?

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确实允许增加这些限制,但是如果不是开放更多的并发连接的负面回报,则会出现一个实际限制,在这种限制下,您将看到收益递减。 假设远程registry的带宽是有限的,更多的连接将简单地分割该带宽,并且docker工具本身将等待直到第一层完成,然后开始解包该传输。 另外任何被中止的docker拉或推将失去一层的任何部分传输,所以你增加了潜在的数据,你需要重新发送更多的并发连接。

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