V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
huluhulu
V2EX  ›  分享发现

猫盘群晖支持 Docker bridge 模式(完整功能),这样 arm 版的官方群晖也都可以完美支持 Docker 了

  •  
  •   huluhulu · 2021-11-12 16:35:19 +08:00 · 2121 次点击
    这是一个创建于 867 天前的主题,其中的信息可能已经有所发展或是发生改变。
    之前发过一个帖子是让猫盘群晖支持 Docker ,但是存在缺陷只能用 host 模式。这个模式的缺点是没有端口映射,就是不能修改 container 的端口,不同 container 都是用真实的 host 的端口,会造成端口冲突。 详见 https://www.v2ex.com/t/611090

    今天抽空,终于完美解决了 bridge 的问题。
    猫盘群晖完美支持端口映射功能,理论上所有 arm 架构的官方群晖都可以使用正常功能的 docker 了,不用再眼馋 X86 群晖了。

    再次鄙视群晖官方,故意删减功能,限制 ARM 版本的 docker 。

    先发个图,后续补个教程

    https://imgur.com/Y3X9eox
    第 1 条附言  ·  2022-05-04 15:18:14 +08:00
    增加了后续,自动化脚本已经上传了。https://github.com/ourcubk/catdriver ,完美支持 docker 端口映射和 bridge 功能,不再是以前的 host 阉割模式!

    支持 猫盘 DSM 6.2.3 25426 版本的群晖。理论上 6.2.x 都应该支持的,各位需要话可以自己测一下。

    修改点:
    1. 编译了猫盘群晖 bridge 所需的.ko 驱动,安装的时候复制到 /opt/lib64/目录
    2. 在每次启动 Docker 前,会执行 insmod 加载这些驱动,同时执行 iptables -P FORWARD ACCEPT 打开 docker 需要的转发功能
    3. 增加 docker 自启动

    新装只需要下载 catdsm-docker.tgz 和 install-docker.sh ,然后执行 install-docker.sh 即可。

    如果以前有自己的 docker ,只是想增加 bridge 功能,可以解压出 catdsm-docker.tgz 里面的.ko 驱动,计划任务里面添加任务按顺序 insmod 一下这些.ko 驱动,然后 iptables -P FORWARD ACCEPT 打开一下转发即可。记得修改自己 dockerd 的启动服务,把 host 模式去掉。
    //按此先后顺序加载
    insmod /opt/lib64/veth.ko
    insmod /opt/lib64/stp.ko
    insmod /opt/lib64/tun.ko
    insmod /opt/lib64/nf_defrag_ipv4.ko
    insmod /opt/lib64/nf_conntrack.ko
    insmod /opt/lib64/x_tables.ko
    insmod /opt/lib64/xt_TCPMSS.ko
    insmod /opt/lib64/xt_recent.ko
    insmod /opt/lib64/xt_NFQUEUE.ko
    insmod /opt/lib64/xt_mark.ko
    insmod /opt/lib64/xt_mac.ko
    insmod /opt/lib64/xt_limit.ko
    insmod /opt/lib64/xt_iprange.ko
    insmod /opt/lib64/xt_geoip.ko
    insmod /opt/lib64/xt_addrtype.ko
    insmod /opt/lib64/xt_conntrack.ko
    insmod /opt/lib64/xt_LOG.ko
    insmod /opt/lib64/bridge.ko
    insmod /opt/lib64/xt_state.ko
    insmod /opt/lib64/xt_tcpudp.ko
    insmod /opt/lib64/xt_multiport.ko
    insmod /opt/lib64/nf_nat.ko
    insmod /opt/lib64/nf_conntrack_ipv4.ko
    insmod /opt/lib64/ip_tables.ko
    insmod /opt/lib64/nf_nat_redirect.ko
    insmod /opt/lib64/xt_REDIRECT.ko
    insmod /opt/lib64/xt_nat.ko
    insmod /opt/lib64/nf_nat_ipv4.ko
    insmod /opt/lib64/nf_nat_masquerade_ipv4.ko
    insmod /opt/lib64/ipt_MASQUERADE.ko
    insmod /opt/lib64/iptable_filter.ko
    insmod /opt/lib64/iptable_nat.ko
    9 条回复    2022-05-15 14:39:14 +08:00
    HashV2
        1
    HashV2  
       2021-11-12 16:49:51 +08:00
    都能 host 了 为什么不能 bridge
    xingso
        2
    xingso  
       2021-11-12 16:55:07 +08:00
    蹲一个后续
    hanmiao
        3
    hanmiao  
       2021-11-12 23:12:32 +08:00
    我更在意的是人脸识别
    Qetesh
        4
    Qetesh  
       2021-11-22 09:13:59 +08:00
    蹲个后续
    tbc0309
        5
    tbc0309  
       2022-03-25 10:47:39 +08:00
    后续呢?来个解决方法
    huluhulu
        6
    huluhulu  
    OP
       2022-03-26 17:10:02 +08:00 via iPhone
    @tbc0309 没有后续了。我整了个闻上云的,直接刷了 x86 的群晖,就没折腾猫盘了…
    huluhulu
        7
    huluhulu  
    OP
       2022-05-04 15:17:23 +08:00
    增加了后续,自动化脚本已经上传了。https://github.com/ourcubk/catdriver ,完美支持 docker 端口映射和 bridge 功能,不再是以前的 host 阉割模式!

    支持 猫盘 DSM 6.2.3 25426 版本的群晖。理论上 6.2.x 都应该支持的,各位需要话可以自己测一下。

    修改点:
    1. 编译了猫盘群晖 bridge 所需的.ko 驱动,安装的时候复制到 /opt/lib64/目录
    2. 在每次启动 Docker 前,会执行 insmod 加载这些驱动,同时执行 iptables -P FORWARD ACCEPT 打开 docker 需要的转发功能
    3. 增加 docker 自启动

    新装只需要下载 catdsm-docker.tgz 和 install-docker.sh ,然后执行 install-docker.sh 即可。

    如果以前有自己的 docker ,只是想增加 bridge 功能,可以解压出 catdsm-docker.tgz 里面的.ko 驱动,计划任务里面添加任务按顺序 insmod 一下这些.ko 驱动,然后 iptables -P FORWARD ACCEPT 打开一下转发即可。记得修改自己 dockerd 的启动服务,把 host 模式去掉。
    //按此先后顺序加载
    insmod /opt/lib64/veth.ko
    insmod /opt/lib64/stp.ko
    insmod /opt/lib64/tun.ko
    insmod /opt/lib64/nf_defrag_ipv4.ko
    insmod /opt/lib64/nf_conntrack.ko
    insmod /opt/lib64/x_tables.ko
    insmod /opt/lib64/xt_TCPMSS.ko
    insmod /opt/lib64/xt_recent.ko
    insmod /opt/lib64/xt_NFQUEUE.ko
    insmod /opt/lib64/xt_mark.ko
    insmod /opt/lib64/xt_mac.ko
    insmod /opt/lib64/xt_limit.ko
    insmod /opt/lib64/xt_iprange.ko
    insmod /opt/lib64/xt_geoip.ko
    insmod /opt/lib64/xt_addrtype.ko
    insmod /opt/lib64/xt_conntrack.ko
    insmod /opt/lib64/xt_LOG.ko
    insmod /opt/lib64/bridge.ko
    insmod /opt/lib64/xt_state.ko
    insmod /opt/lib64/xt_tcpudp.ko
    insmod /opt/lib64/xt_multiport.ko
    insmod /opt/lib64/nf_nat.ko
    insmod /opt/lib64/nf_conntrack_ipv4.ko
    insmod /opt/lib64/ip_tables.ko
    insmod /opt/lib64/nf_nat_redirect.ko
    insmod /opt/lib64/xt_REDIRECT.ko
    insmod /opt/lib64/xt_nat.ko
    insmod /opt/lib64/nf_nat_ipv4.ko
    insmod /opt/lib64/nf_nat_masquerade_ipv4.ko
    insmod /opt/lib64/ipt_MASQUERADE.ko
    insmod /opt/lib64/iptable_filter.ko
    insmod /opt/lib64/iptable_nat.ko
    huluhulu
        8
    huluhulu  
    OP
       2022-05-04 15:18:34 +08:00   ❤️ 1
    derekxxzzyy
        9
    derekxxzzyy  
       2022-05-15 14:39:14 +08:00
    @huluhulu 能帮忙编译一个 kernel 是 4.4.180+的 bridge 驱动吗 dsm7 把内核更新了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5530 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 06:38 · PVG 14:38 · LAX 23:38 · JFK 02:38
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.