Docker 加载内核模块
Docker loading kernel modules
我试图安装一个内核模块,xfsprogs
。它已成功安装在容器内。真是令人惊讶,但是 lsmod
并没有在容器或主机系统中列出这个模块。
如何将新内核模块加载到容器中?(CentOS
容器,Ubuntu
主机)
容器通过系统调用与内核交互,不包含内核的任何部分或容器内的内核模块。这就是容器设计为重量轻且便于携带的原因之一。 xfsprogs 也是用户 space 程序而不是内核模块。
How can a new kernel module loaded in a container?(CentOS container, Ubuntu host)
模块需要加载到您的主机 OS,而不是从 docker 容器。
- 运行特权模式下的容器(--privileged)
- 添加所有功能(--cap-add=ALL)
- 将主机/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 功能,因此可以改进功能。 关于Linux能力模型的几句话
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
我试图安装一个内核模块,xfsprogs
。它已成功安装在容器内。真是令人惊讶,但是 lsmod
并没有在容器或主机系统中列出这个模块。
如何将新内核模块加载到容器中?(CentOS
容器,Ubuntu
主机)
容器通过系统调用与内核交互,不包含内核的任何部分或容器内的内核模块。这就是容器设计为重量轻且便于携带的原因之一。 xfsprogs 也是用户 space 程序而不是内核模块。
How can a new kernel module loaded in a container?(CentOS container, Ubuntu host)
模块需要加载到您的主机 OS,而不是从 docker 容器。
- 运行特权模式下的容器(--privileged)
- 添加所有功能(--cap-add=ALL)
- 将主机/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 功能,因此可以改进功能。 关于Linux能力模型的几句话
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