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

8
在Docker for Windows上,我有一个简单的SQL Server容器,基于microsoft/mssql-server-windows-developer,通过一个简单的docker-compose.yaml文件使用docker-compose up启动。有没有办法为这个容器分配超过1GB的内存?当直接运行镜像或使用-m 4GB构建我的镜像时,我可以做到,但是当使用Docker Compose时,我无法弄清楚如何做到这一点。这个容器需要超过1GB的RAM才能正常运行,但是我所有的研究都没有发现有用的信息。我已经研究了资源配置选项,但那只适用于在Docker Swarm下运行,而我不需要这个。
3个回答

8
在 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。
version: '3'
services:
  my-svc:
    image: microsoft/mssql-server-windows-developer
    deploy:
      resources:
        limits:
          memory: 4G

在运行 docker-compose --compatibility up 命令时,可以使用兼容性标志将部署部分转换为相应的版本 2 参数。然而,不建议在生产环境中使用此功能。

来自文档

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

  • 资源
  • 限制和内存保留
  • 副本
  • 重启策略

所有其他键都将被忽略并在存在时生成警告。您可以使用 --compatibility 标志与 config 命令一起查看将用于部署的配置。

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


兼容性标志对我没有起作用。它抱怨使用了错误版本的组合文件。我改用了2.4格式。 - Brian Vallelunga

4

如何在非Swarm模式的容器上设置资源?

这里介绍的选项仅适用于部署密钥和Swarm模式。如果您想在非Swarm部署中设置资源限制,请使用Compose文件格式版本2 CPU、内存和其他资源选项。如果您有更多问题,请参阅GitHub问题docker/compose/4513上的讨论。

您可以使用版本2的docker-compose文件而不是版本3。您可以使用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

你可以使用 docker stats 命令来检查内存限制。

2

我也试图通过docker-compose进行设置,但在旧机器上无法正常运行SQL Server。最终想起我曾经调整过Docker Desktop中可分配内存的大小。你可以在“设置”按钮下的“资源/高级”中找到它。将内存设置为2GB解决了我的问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接