【发布时间】: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 用户身份):
- 配置sysctl的命令,根据第一个要点:
echo "kernel.unprivileged_userns_clone=1" > /etc/sysctl.d/10-docker.conf \ && sysctl --system - 根据第一个要点配置 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”吗?