【问题标题】:How to set modprobe overlay permit_mounts_in_userns=1?如何设置 modprobe 覆盖 permit_mounts_in_userns=1?
【发布时间】:2020-12-08 11:30:19
【问题描述】:

在尝试将 Docker 守护程序设置为在 Debian 上以非 root 用户(无根模式)运行时,我遇到了以下问题。

the documentation 所述,以下是 Debian GNU/Linux 应遵循的步骤:

  • kernel.unprivileged_userns_clone=1 添加到/etc/sysctl.conf(或/etc/sysctl.d)并运行sudo sysctl --system
  • 要使用overlay2 存储驱动程序(推荐),运行sudo modprobe overlay permit_mounts_in_userns=1(Debian 特定内核补丁,在Debian 10 中引入)。将配置添加到/etc/modprobe.d 以保持持久性。
  • 已知可在 Debian 9 和 10 上工作。仅从 Debian 10 开始支持 overlay2,并且需要上述 modprobe 配置。

据此,我可以组成以下要运行的命令(以 root 用户身份):

  1. 配置sysctl的命令,根据第一个要点:
    echo "kernel.unprivileged_userns_clone=1" > /etc/sysctl.d/10-docker.conf \
    && sysctl --system
    
  2. 根据第一个要点配置 modprobe 的命令:
    echo "overlay permit_mounts_in_userns=1" > /etc/modprobe.d/10-docker.conf \
    && modprobe overlay permit_mounts_in_userns=1
    

第一步似乎工作正常,但是从第二步运行命令时,我最终遇到以下错误:

libkmod: ERROR ../libkmod/libkmod-config.c:656 kmod_config_parse: /etc/modprobe.d/10-docker.conf line 1: ignoring bad line starting with 'overlay'

/etc/modprobe.d/10-docker.conf 中删除“覆盖”似乎都不能解决问题,这会导致以下错误:

libkmod: ERROR ../libkmod/libkmod-config.c:656 kmod_config_parse: /etc/modprobe.d/10-docker.conf line 1: ignoring bad line starting with 'permit_mounts_in_userns=1'

我尝试搜索有关如何设置此配置的一些说明。不过运气不好,有人知道吗?

【问题讨论】:

  • 我也有同样的想法。我很困惑到底要在哪里保存要运行的命令,因为 /etc/modprobe.d 是一个目录。我必须在目录 modprobe.d 中放置一个“overlay.conf”吗?

标签: docker debian


【解决方案1】:

根据#debian频道中freenode IRC上的jellyoptions关键字丢失了,因此这应该是正确的命令:

echo "options overlay permit_mounts_in_userns=1" > /etc/modprobe.d/10-docker.conf

【讨论】:

    猜你喜欢
    • 2022-10-23
    • 1970-01-01
    • 2016-08-25
    • 1970-01-01
    • 1970-01-01
    • 2011-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多