7

I have installed docker 0.11.1 over Ubuntu 12.04. I am trying to change the shmmax from its fixed value (32 M) to something bigger (1G) from within the docker when I run the command:

sysctl -w kernel.shmmax=1073741824
error: "Read-only file system" setting key "kernel.shmmax"

That is because /proc is mounted ro in the container.

Can someone tell me how to mount the proc as r/w in my container to change it?

Jonathan Leffler
  • 730,956
  • 141
  • 904
  • 1,278
upendra
  • 103
  • 1
  • 1
  • 5
  • I can't answer your question but I found a blog which might help you: http://tuhrig.de/how-to-know-you-are-inside-a-docker-container/ – Oliver Hausler Mar 01 '16 at 14:27

2 Answers2

3

If the goal is to set sysctl settings, docker has realized the issue and in 1.12+ you can use the --sysctl flag when running a docker container (or in your compose file) which will set the values inside the container before it is run.

This is sadly not (yet) integrated yet in the dockerfile syntax.

https://docs.docker.com/engine/reference/commandline/run/#configure-namespaced-kernel-parameters-sysctls-at-runtime

docker run --sysctl kernel.shmmax=1073741824 yourimage

Example docker-compose.yml (must use version 2.1):

version: '2.1'
services:
    app:
        sysctls:
            - kernel.shmmax=1073741824
tweak2
  • 646
  • 5
  • 15
  • While not exactly the same, I just had a similar issue in Kubernetes using Docker containers. The /proc virtual filesystem was mounted ro in my container and I needed it to be rw. I solved it by adding "securityContext: { privileged: true }" to the kubernetes container specification. That allowed me to execute "mount -o remount,rw /proc " which was previously failing. – DavidG Oct 13 '21 at 13:47
0

I have had some luck like so:

mount -o remount rw /proc/sys
sysctl -w [your settings here]
Alex
  • 2,435
  • 17
  • 18