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

如何为docker容器分配更多内存,docker,docker-container,Docker,Docker Container,正如标题所示,我正试图为容器分配更多内存。我正在使用docker hub的一个名为“aallam/tomcat mysql”的图像,以防相关 当我在没有任何特殊标志的情况下正常启动它时,内存限制为2GB(即使我读到如果没有设置,内存是无限的) 这是我的docker统计数据 CONTAINER CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O

正如标题所示,我正试图为容器分配更多内存。我正在使用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

我已经读到,可能是虚拟机限制了它。但是为什么docker统计数据显示容器大小限制为2GB呢?

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


如果您正在使用docker for windows或docker for mac,您可以轻松地从Whale中增加它如果您想更改默认容器并使用Virtualbox,您可以通过命令行/CLI:

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

从(docker首选项->高级)为docker机器分配最大内存

高级设置的屏幕截图:

这将设置运行容器时docker消耗的最大限制。现在,在新容器中运行映像,对于4 gigs或更多内存,使用-m=4g标志。e、 g

docker run -m=4g {imageID}

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

docker Desktop V3.3.3(Mac)屏幕截图


如果没有gui,您如何操作?@Philippe,您的用例是什么?Docker for Windows或Docker for Mac随附guli。我认为您的案例是Linux上的本地docker(没有任何虚拟机,生产系统/云就是这样)。在这种情况下,你不需要设置虚拟机内存,因为docker有洞机供其使用。因此,如果我希望docker容器的RAM大于4GB,那么如果我在Linux上开发,我就不需要做任何事情了?这是不可能的,主要是因为您不为docker容器分配内存,而是限制容器可以使用的内存量。请注意,目前的答案不是为容器分配内存,而是为docker运行的虚拟机分配内存。@SiddharthPant,docker直接在Linux机器上运行将使用尽可能多的可用内存,因此除了物理限制之外没有其他限制。感谢您的回答!它在bigSur上对我有效