Search code examples
linuxdockerubuntushared-memoryprocfs

How to remount the /proc filesystem in a docker as a r/w system?


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?


Solution

  • 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