【问题标题】:How to remount the /proc filesystem in a docker as a r/w system?如何将 docker 中的 /proc 文件系统重新挂载为 r/w 系统?
【发布时间】:2014-05-24 02:22:23
【问题描述】:

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

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

那是因为/proc 在容器中挂载了ro

谁能告诉我如何在我的容器中将 proc 挂载为 r/w 来更改它?

【问题讨论】:

标签: linux docker ubuntu shared-memory procfs


【解决方案1】:

如果目标是设置 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

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

version: '2.1'
services:
    app:
        sysctls:
            - kernel.shmmax=1073741824

【讨论】:

  • 虽然不完全一样,但我在使用 Docker 容器的 Kubernetes 中遇到了类似的问题。 /proc 虚拟文件系统以 ro 方式安装在我的容器中,我需要它是 rw。我通过在 kubernetes 容器规范中添加“securityContext: { privileged: true }”解决了这个问题。这让我可以执行之前失败的“mount -o remount,rw /proc”。
【解决方案2】:

我有这样的运气:

mount -o remount rw /proc/sys
sysctl -w [your settings here]

【讨论】:

  • “有一些运气”不是答案,也不是无法解释的命令序列。
  • 在 docker 中,这给出了“权限被拒绝”,即使是 root。
  • 这似乎只有在您使用--privileged 模式运行容器时才有效。但是,在该模式下它确实有效。
猜你喜欢
  • 1970-01-01
  • 2011-07-10
  • 2014-06-21
  • 2019-08-23
  • 2015-03-03
  • 1970-01-01
  • 1970-01-01
  • 2018-12-18
  • 2017-10-01
相关资源
最近更新 更多