Docker加载内核模块

时间:2015-10-08 10:43:42

标签: docker kernel kernel-module

我尝试安装内核模块xfsprogs。它已成功安装在容器内。这确实令人惊讶,但lsmod未在容器或主机系统中列出此模块。 如何在容器中加载新的内核模块?(CentOS容器,Ubuntu主机)

3 个答案:

答案 0 :(得分:11)

容器通过系统调用与内核交互,不包含内核的任何部分或容器内的内核模块。这是容器设计重量轻且便于携带的原因之一。 xfsprogs也是用户空间程序而不是内核模块。

  

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

模块需要加载到主机操作系统上,而不是加载到docker容器中。

答案 1 :(得分:11)

  • 以特权模式运行容器(--privileged)
  • 添加所有功能(--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

此处添加了所有Linux功能,因此可以改进功能。

答案 2 :(得分:1)

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