Changing shmem size of a docker container
Recently, I was playing around with a containerized application having processes using shared memory for communication. It turned out to be a good learning exercise.
I learnt that docker containers are allocated 64M of shared memory by default. The option --shm-size
is used to set the required size for /dev/shm
within the container.
Here is a snippet from Docker documentation.
--shm-size="" Size of /dev/shm. The format is <number><unit>. number must be greater than 0. Unit is optional and can be b (bytes), k (kilobytes), m (megabytes), or g (gigabytes). If you omit the unit, the system uses bytes. If you omit the size entirely, the system uses 64m.
Running a BusyBox container with default settings.
~ $ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
busybox latest 018c9d7b792b 4 days ago 1.22MB
~ $ # checking the default size
~ $ docker run -it busybox sh
/ # df -h /dev/shm
Filesystem Size Used Available Use% Mounted on
shm 64.0M 0 64.0M 0% /dev/shm
Launching a new container with increased shmem size.
~ $ docker run --shm-size=256m -it busybox sh
/ # df -h /dev/shm
Filesystem Size Used Available Use% Mounted on
shm 256.0M 0 256.0M 0% /dev/shm
In a running container, the shmem size can be changed by remounting /dev/shm
with the required size. This will not persist if the container restarts though. Persisting that with a running container may require more steps as discussed in this issue.
~ $ docker run --privileged -it busybox sh
/ # df -h /dev/shm
Filesystem Size Used Available Use% Mounted on
shm 64.0M 0 64.0M 0% /dev/shm
/ # mount -o remount,size=512m /dev/shm
/ # df -h /dev/shm
Filesystem Size Used Available Use% Mounted on
shm 512.0M 0 512.0M 0% /dev/shm
Pruning the containers after use.
~ $ docker container prune
WARNING! This will remove all stopped containers.
Are you sure you want to continue? [y/N] y
Deleted Containers:
96bc50cec581a5b9704a85b48ea519d9a8ca37576ee715c9a9f82e4da4bd80b3
c7e4b4ad4478aaa54cb2acc5e18d5358a06dd6fd1150f9e239df2c97de4ae7a2
e1bfe52829d68340b89308c4ffffa226d5f6a0e8c17ef35b835c7e98cd1d49f5
526cdabfda0d4599d4ff8ed95b04b56808aa65cc88949afc23afe82fe7a3fc67
c54610631c874f833644a59a4bcaa7f81efd07b882a1177b8f2b23e02fac86b0
017e7b878dd22f1a54163d39eb0510fddfa5c947a562293675f9d95c637ae29c
Total reclaimed space: 291B
Comments