Currently When I create new docker container the size of the shared memory directory is limited to 64MB. But, I need to increase this size since my application depend on this shared memory. Is there any way to increase the size of /dev/shm in docker container? I heard that the 64MB is hard coded in the docker code, How to install docker from source and change the value of the /dev/shm?
If you're using docker-compose, you can set the your_service.shm_size
value if you want your container to use that /dev/shm size when running or your_service.build.shm_size
when building.
Example:
version: '3.5'
services:
your_service:
build:
context: .
shm_size: '2gb' <-- this will set the size when BUILDING
shm_size: '2gb' <-- when RUNNING
shm_size
in your_service.shm_size
solved my problem. While others keep saying put it in build
–
Yarvis docker-compose.yml
file. This only applies when using docker-compose. –
Fallible You can modify shm size by passing the optional parameter --shm-size
to docker run
command. The default is 64MB.
eg:
docker run -it --shm-size=256m oracle11g /bin/bash
=
sign replaced by space). However, on Docker Desktop for Windows, for docker build
(rather than docker run
) it stopped working at some moment (perhaps after upgrade but I can't prove it). I realized it was caused by activating Docker Buildkit. This thread github.com/docker/buildx/issues/418 shows it does not support --shm-size
option. Solution was to permanently set system variable DOCKER_BUILDKIT=0
and everything returned to normal. –
Aldenalder docker run --shm-size
argument is also recommended by Ray (ray.init()
, which needs it to run out-of-core and it also recommends "[..] to set this to more than 30% of available RAM." –
Fezzan If you use docker-compose to set up your docker environment, it is also possible to set the shared memory in the docker-compose.yml
configuration file:
build:
context: .
shm_size: '2gb'
More info in the compose-file docs:
If anybody is using an older docker version prior 1.10.0 and cannot upgrade for some reason, there is a workaround I used to set shm-size which works fine for me (you need sudo-rights to create the mount on the host):
sudo mkdir /mnt/dockershm
sudo mount -t tmpfs -o size=1G tmpfs /mnt/dockershm
docker run -d -v /mnt/dockershm:/dev/shm dockerimagetorun:latest
Sometimes it may more appropriate to edit the global config for docker daemon, rather than set the value in docker-compose.yml or at the cli.
Here is the documentation for Daemon configuration file
Pick one method of editing the config:
- On Docker Desktop you can go to
Settings->[Docker Engine]
. - On linux you may edit the default file at
/etc/docker/daemon.json
- On windows
%programdata%\docker\config\daemon.json
- On Mac
~/.docker/daemon.json
Edit the config file to change the shm
default size.
Example:
{
...
"default-shm-size" : "128M"
...
}
After the change, restart docker may be required to relaod the config.
supabase stop
followed by supabase start
to get the change effected. –
Warmup © 2022 - 2024 — McMap. All rights reserved.