问题描述
当尝试将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 10中引入的Debian特定内核补丁)。将配置添加到/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
第一步似乎可以正常工作,但是从步骤2运行命令时,我遇到以下错误:
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
中删除“ overlay”似乎都不能解决问题,这会导致以下错误:
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'
我试图搜索有关如何设置此配置的一些说明。但是没有运气,有人知道吗?
解决方法
根据jelly
频道的freenode IRC上的#debian
,缺少options
关键字,因此这应该是正确的命令:
echo "options overlay permit_mounts_in_userns=1" > /etc/modprobe.d/10-docker.conf