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