【问题标题】:How to assign more memory to docker container如何为 docker 容器分配更多内存
【发布时间】:2017-11-15 22:18:55
【问题描述】:

正如标题所述,我正在尝试为我的容器分配更多内存。我正在使用来自 docker hub 的名为“aallam/tomcat-mysql”的图像,以防万一。

当我在没有任何特殊标志的情况下正常启动它时,内存限制为 2GB(即使我读到如果未设置内存是无限的)

这是我的码头工人统计数据

CONTAINER           CPU %               MEM USAGE / LIMIT       MEM %               NET I/O             BLOCK I/O           PIDS
ba57d6c9e9d2        0.22%               145.6 MiB / 1.952 GiB   7.29%               508 B / 508 B       0 B / 6.91 MB       68

我尝试像这样显式设置内存,但结果相同

docker run -d --memory=10g --memory-swap=-1 -e MYSQL_PASSWORD=password -p 3307:3306 -p 8081:8080 aallam/tomcat-mysql

我读到可能是 VM 限制了它。但是为什么 docker stats 显示容器大小限制为 2GB?

【问题讨论】:

    标签: docker docker-container


    【解决方案1】:

    您看到的 2GB 限制是运行 docker 的 VM 的总内存。

    如果您使用的是 docker-for-windows 或 docker-for-mac,您可以通过任务栏中的 Whale ? 图标轻松增加它,然后转到 Preferences -> Advanced:

    但是如果你后面使用的是VirtualBox,打开VirtualBox,选择并配置docker-machine分配的内存。

    在 Mac 上查看此内容:

    https://docs.docker.com/docker-for-mac/#advanced

    内存 默认情况下,Docker for Mac 设置为使用 2 GB 运行时内存,从 Mac 上的总可用内存中分配。如果您希望 Docker for Mac 使用更少的内存,您可以通过将此数字设置得更高(例如设置为 3)或更低(设置为 1)来增加应用程序的 RAM 以获得更快的性能。

    对于 Windows:

    https://docs.docker.com/docker-for-windows/#advanced

    内存 - 更改 Docker for Windows Linux VM 使用的内存量

    【讨论】:

    • 没有 gui 怎么办?
    • @Philippe,你的用例是什么? Docker for Windows 或 docker for Mac 自带 guli。我认为您的案例是通过 Linux 获得本机 docker(没有任何虚拟机,生产系统/云就是这种情况)。在这种情况下,您不需要设置 VM 内存,因为 docker 有空洞机供其使用。
    • 是的,我后来想通了。因此,如果我希望我的 docker 容器拥有 >4GB 的 RAM,那么如果我在 Linux 上进行开发,我就不需要做任何事情?
    • 这是不可能的,主要是因为你没有为docker容器分配内存,而是限制一个容器可以使用多少内存。请注意,目前的答案不是为容器分配内存,而是为运行 docker 的虚拟机分配内存。
    • @SiddharthPant ,直接在 Linux 机器上运行的 docker 将使用尽可能多的可用内存,因此除了物理内存之外没有任何限制。
    【解决方案2】:

    从(docker 偏好 -> 高级)为您的 docker 机器分配最大内存

    高级设置截图:

    这将设置运行容器时 docker 消耗的最大限制。现在在带有 -m=4g 标志的新容器中运行 4 gigs ram 或更多的图像。例如

    docker run -m=4g {imageID}
    

    记得应用 ram 限制增加更改。重新启动泊坞窗并仔细检查内存限制确实增加了。这可能是您在 docker 容器中看不到内存限制增加的因素之一。

    【讨论】:

      【解决方案3】:

      如果您想更改默认容器并且您正在使用 Virtualbox,您可以通过命令行/CLI 进行:

      docker-machine stop
      VBoxManage modifyvm default --cpus 2
      VBoxManage modifyvm default --memory 4096
      docker-machine start
      

      【讨论】:

        【解决方案4】:

        Docker Desktop V3.3.3 (Mac) 的屏幕截图

        【讨论】:

        • 感谢您的回答!它适用于bigSur
        猜你喜欢
        • 2018-03-29
        • 2020-07-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-09-30
        • 1970-01-01
        • 1970-01-01
        • 2023-02-03
        相关资源
        最近更新 更多