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

kan*_*ane 79 docker docker-container

正如标题所示,我正在尝试为我的容器分配更多内存.我正在使用来自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
Run Code Online (Sandbox Code Playgroud)

我尝试明确地设置内存,但结果相同

docker run -d --memory=10g --memory-swap=-1 -e MYSQL_PASSWORD=password -p 3307:3306 -p 8081:8080 aallam/tomcat-mysql
Run Code Online (Sandbox Code Playgroud)

我读过,也许虚拟机正在限制它.但是为什么docker统计数据显示容器大小限制为2GB?

Rob*_*ert 151

2GB你看到的极限是在泊坞窗运行虚拟机的内存总量.

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

Docker首选项

但是如果您正在使用VirtualBox,请打开VirtualBox,选择并配置docker-machine分配的内存.

对于Mac,请看这个:

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

内存默认情况下,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你怎么做? (50认同)
  • @Philippe,你的用例是什么?用于Windows的Docker或用于Mac的docker带有guli.我认为您的案例是通过Linux获得原生docker(没有任何虚拟机,生产系统/云就是这种情况).在这种情况下,您不需要设置VM内存,因为docker具有用于其用途的孔机. (11认同)
  • 是的,我以后想出来了.所以,如果我希望我的docker容器有大于4GB的RAM,如果我在Linux上开发,我不需要做任何事情? (9认同)
  • 这是不可能的,主要是因为您没有为 docker 容器分配内存,而是*限制*容器可以使用多少内存。请注意,目前的答案不是为容器分配内存,而是为运行 docker 的虚拟机分配内存。 (7认同)
  • @SiddharthPant ,直接在 Linux 机器上运行的 docker 将使用尽可能多的可用内存,因此除了物理内存之外没有其他限制。 (4认同)

des*_*ing 13

如果要更改默认容器并使用Virtualbox,可以通过命令行/ CLI执行此操作:

docker-machine stop
VBoxManage modifyvm default --cpus 2
VBoxManage modifyvm default --memory 4096
docker-machine start
Run Code Online (Sandbox Code Playgroud)


Mar*_*eue 9

从(docker preference-> advance)为docker机器分配最大内存。这将设置运行容器时docker消耗的最大限制。现在,在带有-m = 4g标志的新容器中运行4个或更多演出的图像。例如

docker run -m=4g {imageID}
Run Code Online (Sandbox Code Playgroud)

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


Der*_*ike 6

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

Docker 桌面菜单下拉

Docker 桌面首选项