如何在没有特权模式的情况下为docker容器加载内核模块?

如何在没有特权模式的情况下为docker容器加载内核模块?

我想在docker容器中使用一些由内核提供的功能,例如fuse(sshfs)。我可以使用特权模式轻松地将模块加载到 Docker 容器中。但是,如果我想在容器启动时加载该模块并且不让它加载其他模块,可以吗?

答案1

您确定问题实际上是在加载模块吗?如果我这样做:

% docker run -it ssh-test bash
root@090961bb6f3a:/project# sshfs xxxx@xxxx:/xxxx/xxxx /mnt

我明白了

fuse: device not found, try 'modprobe fuse' first

原因是 Docker 容器的功能受到限制。解决这个问题的方法是运行容器

% docker run -it --cap-add SYS_ADMIN --device /dev/fuse ssh-test bash

这让我可以使用 sshfs 来挂载卷。

相关内容