将内核模块从Mac OS Sierra主机加载到Docker容器



我Juste Juste安装了一个自定义内核模块,以在我的MacBook上启用SCTP支持

我想将此内核模块加载到我的码头容器中。

我尝试使用 - cap-add sys_module flag启动一个容器,然后安装 libsctp-dev lksctp-tools kmod kmod package package " modprobe 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主机上,有人建议这样做:Docker加载内核模块,但与MacOS不兼容和" Dirty" ...

所以我的问题是:有人知道如何使用MacOS主机在Docker容器中使用内核模块吗?这是可能的吗?

我发现Mac的Docker与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 文件和set config_ip_sctp = y 启用内核中的SCTP支持。

然后,我重新编译了内核,并将新汇编的内核文件(bzimage(复制到Mac /applications/docker.app/contents/contents/resources/moby/moby/vmlinuz64 kernel文件中的docker。>

Mac和...

重新启动Docker

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

在这里拉请。

最新更新