将内核模块从 mac os sierra host 加载到 docker 容器
Load kernel module from mac os sierra host to a docker container
我刚刚安装了 a custom kernel module 以在我的 Macbook 上启用 SCTP 支持
我想将这个内核模块加载到我的 docker 容器中。
我尝试使用 --cap-add SYS_MODULE 标志启动容器并安装 libsctp-dev lksctp-tools kmod 容器中的包以使用 "modprobe sctp"... 启用 sctp 但未成功:
modprobe: ERROR: ../libkmod/libkmod.c:586 kmod_search_moddep() could not open moddep file '/lib/modules/4.9.13-moby/modules.dep.bin' modprobe:
FATAL: Module SCTP not found in directory /lib/modules/4.9.13-moby
在 linux 主机上,有些人建议这样做: 但它与 macOS 和 "dirty"...
都不兼容
所以我的问题是:有谁知道如何使用 macOs 主机在 docker 容器中使用内核模块?这可能吗?
我发现 docker for mac 运行在带有 alpine 的 hyperkit VM 上以获得 linux 内核。
正如@DanLowe 在评论中提到的,我们可以使用以下命令访问此 VM:docker run --rm -it --privileged --pid=host debian nsenter -t 1 -m -u -n -i sh
此 VM 使用的内核源代码可在此处获得:https://github.com/linuxkit/linuxkit
我编辑了 kernel/kernel_config 文件并设置 CONFIG_IP_SCTP=y 以在内核中启用 SCTP 支持.
然后我重新编译内核并将我新编译的内核文件(bzImage)复制到docker for mac /Applications/Docker.app/Contents/Resources/moby/vmlinuz64 内核文件.
已重新启动 docker mac 并且...
host>docker run -it debian
container>cat /proc/net/protocols
protocol size sockets memory press maxhdr slab module cl co di ac io in de sh ss gs se re sp bi br ha uh gp em
SCTPv6 1416 1 0 no 0 yes kernel y y y y y y y y y y y y n y y y y y y
SCTP 1256 0 0 no 0 yes kernel y y y y y y y y y y y y n y y y y y y
拉取请求here.
我刚刚安装了 a custom kernel module 以在我的 Macbook 上启用 SCTP 支持
我想将这个内核模块加载到我的 docker 容器中。
我尝试使用 --cap-add SYS_MODULE 标志启动容器并安装 libsctp-dev lksctp-tools kmod 容器中的包以使用 "modprobe sctp"... 启用 sctp 但未成功:
modprobe: ERROR: ../libkmod/libkmod.c:586 kmod_search_moddep() could not open moddep file '/lib/modules/4.9.13-moby/modules.dep.bin' modprobe:
FATAL: Module SCTP not found in directory /lib/modules/4.9.13-moby
在 linux 主机上,有些人建议这样做:
所以我的问题是:有谁知道如何使用 macOs 主机在 docker 容器中使用内核模块?这可能吗?
我发现 docker for mac 运行在带有 alpine 的 hyperkit VM 上以获得 linux 内核。
正如@DanLowe 在评论中提到的,我们可以使用以下命令访问此 VM:docker run --rm -it --privileged --pid=host debian nsenter -t 1 -m -u -n -i sh
此 VM 使用的内核源代码可在此处获得:https://github.com/linuxkit/linuxkit
我编辑了 kernel/kernel_config 文件并设置 CONFIG_IP_SCTP=y 以在内核中启用 SCTP 支持.
然后我重新编译内核并将我新编译的内核文件(bzImage)复制到docker for mac /Applications/Docker.app/Contents/Resources/moby/vmlinuz64 内核文件.
已重新启动 docker mac 并且...
host>docker run -it debian
container>cat /proc/net/protocols
protocol size sockets memory press maxhdr slab module cl co di ac io in de sh ss gs se re sp bi br ha uh gp em
SCTPv6 1416 1 0 no 0 yes kernel y y y y y y y y y y y y n y y y y y y
SCTP 1256 0 0 no 0 yes kernel y y y y y y y y y y y y n y y y y y y
拉取请求here.