'Update max_map_count for ElasticSearch docker container Mac host
I'm using this container to start elasticsearch
in docker
. In accordance with the manual I have to update max_map_count
to start the container
sudo sysctl -w vm.max_map_count=262144
but.. I can update it in my host (container) AFTER I start it while I'm unable to start it. Am I doing something wrong?
ERROR: bootstrap checks failed max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144]
If I try to do it on my host machine (which is Mac) I get the following error.
sysctl: unknown oid 'vm.max_map_count'
Docker engine installs the Lunix VM where all containers are running. So the command to increase the limit should be executed for the Linux host, not for the Mac.
How can I access Linux VM via terminal installed by the Docker engine?
Solution 1:[1]
On Docker Toolbox
If you are in docker toolbox try the docker client from terminal and then make the configs:
docker-machine ssh
sudo sysctl -w vm.max_map_count=262144
exit
On Docker For Mac:
The vm_max_map_count setting must be set within the xhyve virtual machine:
$ screen ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/tty
If it asks you for a username and passwordLog in with root and no password.
If it just has a blank screen, press RETURN.
Then configure the sysctl setting as you would for Linux:
sysctl -w vm.max_map_count=262144
Exit by Control-A Control-\.
Se the docs here.
Persistence
In some cases, this change does not persist across restarts of the VM. So, while screen
'd into, edit the file /etc/sysctl.d/00-alpine.conf
and add the parameter vm.max_map_count=262144
to the end of file.
Solution 2:[2]
On Latest Docker For Mac (Version 18.06.0-ce-mac70):
$ screen ~/Library/Containers/com.docker.docker/Data/vms/0/tty
On the blank screen, press RETURN.
Then configure the sysctl setting as you would for Linux:
sysctl -w vm.max_map_count=262144
Exit by Control-A Control-\
Solution 3:[3]
For those using Docker Desktop
on windows 10 you have to execute:
wsl -d docker-desktop
in the command line before sysctl -w vm.max_map_count=262144
Solution 4:[4]
For those who use docker desktop on mac, you can easily increase the memory by the following steps:
- click on docker desktop -> preferences...
- navigate to 'Resources'
- change the memory to whatever you need
- click on 'Apply & Restard'
Solution 5:[5]
Folder has been moved and this is the new location -
$screen ~/Library/Containers/com.docker.docker/Data/vms/0/tty
and then
sysctl -w vm.max_map_count=262144
Solution 6:[6]
For mac users you might have a problem connecting to docker VM, therefore you should run this command to enter the shell of the Docker VM:
docker run -it --privileged --pid=host debian nsenter -t 1 -m -u -n -i sh
GitHub issue description: https://github.com/docker/for-mac/issues/4822
Solution 7:[7]
If you have installed Docker from docker's Mac installer then you will have Docker desktop installed(also includes includes Docker Engine, Docker CLI client, Docker Compose, Notary, Kubernetes, and Credential Helper.)
Here is what Docker desktop looks like in 2021 where you can change memory/swap or any other resources.
Step 1 - click on docker's preferences as shown below.
Step 2 - Click on resources tab, here you can tweak the resources and finally click on "Apply and Restart" button.
Please ignore configuration what I made. You can set based on your requirement.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | Will Barnwell |
Solution 2 | luskwater |
Solution 3 | Hayi |
Solution 4 | Bye |
Solution 5 | datamonk |
Solution 6 | Serge |
Solution 7 | Shakeel |