如何为 docker 容器分配更多内存

How to assign more memory to docker container

如标题所示,我正在尝试为我的容器分配更多内存。我正在使用来自 docker hub 的图像 "aallam/tomcat-mysql" 以防相关。

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

这是我的 docker 统计数据

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 统计数据显示容器大小限制为 2GB?

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

如果您正在使用 docker-for-windows 或 docker-for-mac 您可以通过任务栏中的鲸鱼图标轻松增加它,然后转到首选项 - >高级:

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

查看 Mac:

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

MEMORY By default, Docker for Mac is set to use 2 GB runtime memory, allocated from the total available memory on your Mac. You can increase the RAM on the app to get faster performance by setting this number higher (for example to 3) or lower (to 1) if you want Docker for Mac to use less memory.

对于Windows:

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

Memory - Change the amount of memory the Docker for Windows Linux VM uses

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

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

从(docker 首选项 -> 高级)

为您的 docker 机器分配最大内存

高级设置截图:

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

docker run -m=4g {imageID}

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

Docker Desktop V3.3.3 (Mac)

的屏幕截图