在 Windows 上使用 docker-compose 增加 Docker 容器的内存?

Bri*_*nga 9 out-of-memory docker docker-compose docker-for-windows

在 Windows 版 Docker 上,我有一个简单的 SQL Server 容器,通过一个简单的文件microsoft/mssql-server-windows-developer启动该容器。docker-compose updocker-compose.yaml

有没有办法给这个容器分配超过1GB的内存?我可以在直接运行映像或使用 构建映像时执行此操作-m 4GB,但在使用 Docker Compose 时我不知道如何执行此操作。这个容器需要超过 1GB 的 RAM 才能正常运行,到目前为止我的所有研究都没有发现任何有用的信息。

我研究了资源配置选项,但这仅适用于在 Docker Swarm 下运行时,我不需要。

dan*_*orn 9

在 docker compose 版本 2.* 中,您可以使用mem_limit选项,如下所示

\n\n
version: \'2.4\'\nservices:\n  my-svc:\n    image: microsoft/mssql-server-windows-developer\n    mem_limit: 4G\n
Run Code Online (Sandbox Code Playgroud)\n\n

在 docker compose 版本 3 中,它被资源取代在 docker compose 版本 3 中,它被需要 docker swarm 的

\n\n
version: \'3\'\nservices:\n  my-svc:\n    image: microsoft/mssql-server-windows-developer\n    deploy:\n      resources:\n        limits:\n          memory: 4G\n
Run Code Online (Sandbox Code Playgroud)\n\n

有一个兼容性标志,可用于在运行时将部署部分转换为等效的版本 2 参数docker-compose --compatibility up。但是,不建议在生产部署中这样做

\n\n

来自文档

\n\n
\n

docker-compose 1.20.0 引入了一个新的 --compatibility 标志,旨在帮助开发人员更轻松地过渡到版本 3。启用后,\n docker-compose 会读取每个服务\xe2\x80\x99s 定义的部署部分\n 并尝试将其转换为等效的版本 2 参数。\n 目前,将转换以下部署密钥:

\n\n
    \n
  • 资源
  • \n
  • 限制和内存预留
  • \n
  • 复制品
  • \n
  • 重启策略
  • \n
\n\n

condition 和 max_attempts 所有其他键都将被忽略,并产生\n 警告(如果存在)。您可以通过在 config 命令中使用 --compatibility 标志来查看将用于部署的配置。

\n\n

我们建议不要在生产中使用 --compatibility 模式。由于生成的配置只是使用非 Swarm 模式属性的近似值,因此可能会产生意外结果。

\n
\n


Seb*_*sch 4

正在寻找在非集群模式容器上设置资源的选项?

此处描述的选项特定于部署密钥和集群模式。如果要在非 Swarm 部署上设置资源限制,请使用Compose 文件格式版本 2 CPU、内存和其他资源选项如果您还有其他问题,请参阅 GitHub 问题docker/compose/4513上的讨论。

您可以在版本 2 而不是版本 3 上使用 docker-compose 文件。您可以使用mem_limit(在版本 2 上可用)设置内存限制。所以你可以使用这样的 docker-compose 文件:

version: "2.4"
services:
  sql-server:
    image: microsoft/mssql-server-windows-developer
    environment:
      - ACCEPT_EULA=Y
      - SA_PASSWORD=t3st&Pa55word
    mem_limit: 4GB
Run Code Online (Sandbox Code Playgroud)

您可以使用 检查内存限制docker stats