装入内核模块的Docker

k2fxgqgv  于 2022-10-23  发布在  Docker
关注(0)|答案(3)|浏览(147)

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

nwwlzxa7

nwwlzxa71#

Linux主机中:

  • 以特权模式运行容器(--特权模式)
  • 添加所有能力(--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功能,以便对功能进行细化。Few words about Linux capabilities Model

gk7wooem

gk7wooem2#

容器通过系统调用与内核交互,并且不包括内核的任何部分或容器内的内核模块。这就是为什么集装箱设计成轻便轻便的原因之一。另外,xfsprogs是用户空间程序,而不是内核模块。
如何将新的内核模块加载到容器中?(CentOS容器、Ubuntu主机)
该模块需要加载到您的主机操作系统上,而不是从坞站容器加载。

trnvg8h3

trnvg8h33#

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

相关问题