如何将 docker 中的 /proc 文件系统重新挂载为 ar/w 系统?

upe*_*dra 6 linux ubuntu shared-memory procfs docker

我已经在 Ubuntu 12.04 上安装了 docker 0.11.1。当我运行以下命令时,我试图将 shmmax 从其固定值 (32 M) 更改为更大 (1G) 的值(1G):

sysctl -w kernel.shmmax=1073741824
error: "Read-only file system" setting key "kernel.shmmax"
Run Code Online (Sandbox Code Playgroud)

那是因为/proc安装ro在容器中。

有人能告诉我如何r/w在我的容器中安装 proc来更改它吗?

twe*_*ak2 3

如果目标是设置 sysctl 设置,docker 已经意识到了这个问题,在 1.12+ 中,您可以在运行 docker 容器(或在您的 compose 文件中)时使用 --sysctl 标志,这将在运行之前设置容器内的值。

遗憾的是,这还没有集成到 dockerfile 语法中。

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

docker run --sysctl kernel.shmmax=1073741824 yourimage
Run Code Online (Sandbox Code Playgroud)

示例 docker-compose.yml(必须使用版本 2.1):

version: '2.1'
services:
    app:
        sysctls:
            - kernel.shmmax=1073741824
Run Code Online (Sandbox Code Playgroud)