As the title reads, I'm trying to assign more memory to my container. I'm using an image from docker hub called "aallam/tomcat-mysql" in case that's relevant.

When I start it normally without any special flags, there's a memory limit of 2GB (even though I read that memory is unbounded if not set)

Here are my docker stats

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

I tried setting memory explicitly like so but with same results

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

I've read that perhaps the VM is what's restricting it. But then why does docker stats show that container size limit is 2GB?

kane

Ответов: 4

Ответы (4)

Этот 2GBпредел, который вы видите, - это общая память виртуальной машины, в которой работает докер.

Если вы используете docker-for-windows или docker-for-mac, вы можете легко увеличить его с помощью значка Whale 🐳 на панели задач, затем перейдите в Настройки -> Дополнительно:

Docker Preferences

But if you are using VirtualBox behind, open VirtualBox, Select and configure the docker-machine assigned memory.

См. Это для Mac:

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

ПАМЯТЬ По умолчанию Docker для Mac настроен на использование 2 ГБ оперативной памяти, выделенной из общей доступной памяти на вашем Mac. Вы можете увеличить ОЗУ в приложении, чтобы повысить производительность, установив это число выше (например, до 3) или ниже (до 1), если вы хотите, чтобы Docker для Mac использовал меньше памяти.

For Windows:

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

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

Allocate maximum memory to your docker machine from (docker preference -> advance )

Screenshot of advance settings: Screenshot of advance settings.

This will set the maximum limit docker consume while running containers. Now run your image in new container with -m=4g flag for 4 gigs ram or more. e.g.

docker run -m=4g {imageID}

Не забудьте применить изменения увеличения предела подъема. Перезапустите докер и дважды проверьте, увеличился ли предел оперативной памяти. Это может быть одним из факторов, по которым вы не видите увеличения лимита оперативной памяти в контейнерах докеров.

Screen shots for Docker Desktop V3.3.3 (Mac)

Docker Desktop Menu Dropdown

Docker Desktop Preferences

If you want to change the default container and you are using Virtualbox, you can do it via the commandline / CLI:

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

2022 WebDevInsider