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

Increase memory of Docker container with docker-compose on Windows?

在 Docker 上 Windows,我有一个基于 microsoft/mssql-server-windows-developer 的简单 SQL 服务器容器,它通过 docker-compose up 通过一个简单的 docker-compose.yaml 文件.

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

我查看了 resources 配置选项,但这只适用于 运行 在 Docker Swarm 下,我不需要。

Looking for options to set resources on non swarm mode containers?

The options described here are specific to the deploy key and swarm mode. If you want to set resource constraints on non swarm deployments, use Compose file format version 2 CPU, memory, and other resource options. If you have further questions, refer to the discussion on the GitHub issue docker/compose/4513.

您可以在版本 2 而不是版本 3 上使用 docker-compose 文件。您可以使用 mem_limit (available on version 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

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

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

version: '2.4'
services:
  my-svc:
    image: microsoft/mssql-server-windows-developer
    mem_limit: 4G

在 docker compose 版本 3 中,它被需要 docker swarm 的 resources 选项取代。

version: '3'
services:
  my-svc:
    image: microsoft/mssql-server-windows-developer
    deploy:
      resources:
        limits:
          memory: 4G

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

来自documentation

docker-compose 1.20.0 introduces a new --compatibility flag designed to help developers transition to version 3 more easily. When enabled, docker-compose reads the deploy section of each service’s definition and attempts to translate it into the equivalent version 2 parameter. Currently, the following deploy keys are translated:

  • resources
  • limits and memory reservations
  • replicas
  • restart_policy

condition and max_attempts All other keys are ignored and produce a warning if present. You can review the configuration that will be used to deploy by using the --compatibility flag with the config command.

We recommend against using --compatibility mode in production. Because the resulting configuration is only an approximate using non-Swarm mode properties, it may produce unexpected results.

也想通过 docker-compose 进行设置。很难弄清楚为什么 sql 服务器在一台新机器上工作,但在我的旧机器上不再工作。最后想起我已经调低了可以在 Docker 桌面上分配的大小。使用它,您可以通过设置按钮 Resources/Advanced 找到它。将内存设置为 2GB 解决了我的问题。