Docker加载内核模块

Docker加载内核模块,docker,kernel,kernel-module,Docker,Kernel,Kernel Module,我试图安装一个内核模块,xfsprogs。它已成功安装在容器中。这确实令人惊讶,但是lsmod没有在容器内或主机系统中列出此模块。 如何将新内核模块加载到容器中?(CentOScontainer,Ubuntuhost)容器通过系统调用与内核交互,并且不包括内核的任何部分或容器中的内核模块。这就是为什么集装箱设计为重量轻、便于携带的原因之一。XFSProg也是用户空间程序,而不是内核模块 如何在容器中加载新内核模块?(CentOS容器,Ubuntu主机) 模块需要加载到主机操作系统上,而不是从do

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

容器通过系统调用与内核交互,并且不包括内核的任何部分或容器中的内核模块。这就是为什么集装箱设计为重量轻、便于携带的原因之一。XFSProg也是用户空间程序,而不是内核模块

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

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

  • 以特权模式运行容器(--privileged
  • 添加所有功能(--cap Add=all
  • 将主机/lib/模块装入容器(-v/lib/modules:/lib/modules
docker-run--name-container\u-name--privileged--cap add=ALL-d\
-v/dev:/dev-v/lib/modules:/lib/modules image\u id
注意:此处添加了所有Linux功能,以便对功能进行优化。

是一个容器示例,该容器在启动过程中加载内核模块

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

xfsprogs
是一个包,由用户空间库提供
lsmod
显示当前加载到内核中的内核模块。但是
xfs
fs需要什么模块呢。“支持”?为了使系统能够装载使用
xfs
格式化的文件系统,您需要在启用xfs模块的情况下构建内核(在配置文件中)。如果
sudo modprobe xfs
(在主机上运行)报告找不到模块的错误,那么您的内核不支持xfs文件系统。我明白了,但是我如何在主机上修复它(禁用的xfs模块)?在内核中启用
xfs
模块的唯一干净方法是重建内核(从Docker的内核源代码)包含配置文件
CONFIG\u XFS\u FS:=m
。如果由于某种原因无法使用此方法。。其他方法只是黑客,并不简单。当你运行windows或macosx版本的docker时,应该使用什么?moby linux内核模块在哪里?在docker toolbox for windows下运行boot2docker linux主机的docker toolbox中,您可以通过ssh连接到它并查看/lib/modules下的模块。我想我不清楚您的答案。因此,如果我在Mac上运行,则没有/lib/modules目录。在运行Docker守护程序的基础VM上可能存在漏洞。但是当您在这里使用-v parm时,我的理解是它访问的是主机(Mac)系统,而不是VM。