Docker 是否限制每个映像最多运行 64 个容器?

Docker 是否限制每个映像最多运行 64 个容器?

我在使用 Docker for Windows 时遇到了问题,但在网上没有找到任何有用的答案。

我发现https://stackoverflow.com/questions/21799382/is-there-a-maximum-number-of-containers-running-on-a-docker-host/21801470答案可以归结为“限制是由系统资源设定的”。

这要么不适用于 Windows 系统,要么 - 更有可能的是 - 我不知道我遇到的限制。

我有一个基于的 Docker 映像microsoft/dotnet:2.1-aspnetcore-runtime,它是作为 Linux 容器创建的,应该在 Win 10 Pro 机器上的 Windows 版 Docker 上运行(在开发期间)。

我可以启动此映像的多个容器,它们都按预期工作。但是,我无法使用以下方法启动超过上述 64 个容器

docker run -d -v C:\Users\Public\Documents\DockerShare:/app/SharedData dockerImage:latest

我最初将 Docker 的限制设置为 10GB,后来将其增加到 16GB,但毫无效果。此外,运行 Kestrel 服务器的 64 台机器仅占用 1.8GB 的​​内存(空闲时,因为它们刚启动时)。

另一个接触点是每个容器在启动时挂载的共享。

我也检查了https://docs.docker.com/engine/reference/commandline/dockerd/#daemon-configuration-file但似乎没有属性可以限制其中的容器数量。

更新

我在 Ubuntu 18.04.2 LTS 上尝试了同样的操作,结果相同。一旦我到达容器 #65 的开头,容器就会立即退出,代码为 139。卷当然会更改为 Linux 路径,例如

docker run -d -v ~/DockerShare:/app/SharedData dockerImage:latest

答案1

我似乎找到解决办法了。

在将所有服务升级到 ASPNET Core 2.2 后,我检查了代码,以检查是否存在指向以前的 donet core 版本的硬链接,并在文件中找到了以下几Startup.cs

public void ConfigureServices(IServiceCollection services)
{
    services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
    //                                                                    ====
    //                                                                      ^
    //                                                                      |   
    [...]
}

_2_1替换并重建容器后,_2_2我能够毫无问题地启动 100 个容器。

相关内容