Docker加载内核模块

我试图安装一个内核模块, xfsprogs 。 它成功安装在一个容器内。 这真是令人惊讶,但是lsmod并没有在容器或主机系统中列出这个模块。 如何在一个容器中加载一个新的内核模块?( CentOS容器, Ubuntu主机)

容器通过系统调用与内核进行交互,不包含容器内的任何内核或内核模块部分。 这是为什么容器devise重量轻和便携的原因之一。 另外xfsprogs是用户空间程序,而不是内核模块。

如何在一个容器中加载一个新的内核模块?(CentOS容器,Ubuntu主机)

该模块需要加载到您的主机操作系统,而不是从docker集装箱。

  • 以特权模式运行容器( – 特权)
  • 添加所有function(–cap-add = ALL)
  • 将host / lib / modules装入容器(-v / lib / modules:/ lib / modules)

docker run --name container_name --privileged --cap-add=ALL -d -v /dev:/dev -v /lib/modules:/lib/modules image_id

在这里所有的linuxfunction都被添加了,所以可以改进function。

Falco是加载内核模块作为其启动过程的一部分的容器的一个例子。

 docker run -i -t --name falco --privileged \ -v /var/run/docker.sock:/host/var/run/docker.sock \ -v /dev:/host/dev \ -v /proc:/host/proc:ro \ -v /boot:/host/boot:ro \ -v /lib/modules:/host/lib/modules:ro \ -v /usr:/host/usr:ro \ sysdig/falco