V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
qq565425677
V2EX  ›  问与答

nginx docker 容器大家倾向于用 host 模式还是 bridge 模式?

  •  
  •   qq565425677 · 2023-05-01 11:16:35 +08:00 · 1882 次点击
    这是一个创建于 601 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我之前用一直自建的 bridge ,但是客户端使用 ipv6 网络访问时,地址会在 docker 容器中转换成内部 ipv4 ,一般的使用上没什么问题,但总归不爽。听说 docker 开启容器内 ipv6 支持比较麻烦而且还有 bug 所以暂时不想折腾。

    另一种方法是使用 host 模式,既支持 ipv6 ,性能也更高一些,缺点是不如 bridge 隔离性,即安全性好。

    因为我也不清楚两种模式性能和安全性分别能差多少,以及实际使用下来哪个更可以忽略,不知道如何更好的取舍,所以想请教一下大家,还请大家不吝赐教,谢谢!
    第 1 条附言  ·  2023-05-02 11:27:20 +08:00
    谢谢大家的回复,想了想也没必要隔离的那么严,好多 ngxin 还是直接不用 docker 跑的,所以目前已经改成 host 了。说下目前感受下来的优缺点吧

    优点:完美支持 ipv6

    缺点:反代端口配置麻烦,以前在同一个 docker 网络,反代时只要输入容器名字+端口号即可。现在需要先暴露容器的端口,各端口还不能冲突,nginx 上还要再新开一个端口去反代容器的端口,也不能使用容器名字只能用 localhost...

    缺点还是挺要命的,不过强迫症还是想要 ipv6 的支持,学校教育网 v4 和 v6 的网速也是天差地别
    9 条回复    2023-05-03 13:10:43 +08:00
    Heisenbery
        1
    Heisenbery  
       2023-05-01 13:12:03 +08:00 via iPhone   ❤️ 1
    我的使用习惯是 qbittorent 、tailscale 这些下载类或者对 IPV6 或网络有强需求的 docker 使用 host ,其他的都用 bridge 。

    对我而言,两者最大的区别就是 host 不需要手动一个个映射端口
    lovelylain
        2
    lovelylain  
       2023-05-01 16:28:34 +08:00 via Android   ❤️ 1
    需要反向代理访问其他服务的服务走 host ,例如 nginx ,其他服务非必要的话用 bridge ,用 nginx 反代
    julyclyde
        3
    julyclyde  
       2023-05-02 10:41:50 +08:00   ❤️ 1
    host 比较方便
    要不然就会带一堆 iptables 规则,很烦
    lovelylain
        4
    lovelylain  
       2023-05-02 15:20:27 +08:00 via Android   ❤️ 1
    “缺点:反代端口配置麻烦,以前在同一个 docker 网络,反代时只要输入容器名字+端口号即可。现在需要先暴露容器的端口,各端口还不能冲突,nginx 上还要再新开一个端口去反代容器的端口,也不能使用容器名字只能用 localhost...”
    自己搞错了方案不能怪到 host 模式上呀,不需要给其他容器暴露端口的,只要自定义网络并固定容器 ip ,就可以在 host 的 nginx 内通过容器 ip:容器端口反代的。
    hyperbin
        5
    hyperbin  
       2023-05-02 20:02:20 +08:00 via Android   ❤️ 1
    新建个 docker network ,把 nginx 和一堆服务都加入,做反代后对外只需要暴露一个 80/443 ,本地再配上各服务的域名就行了
    qq565425677
        6
    qq565425677  
    OP
       2023-05-03 10:59:14 +08:00
    @lovelylain #4 多谢老哥的方案,这样确实比开端口方便的多,就是指定 ip 还是不如原来在一个网路下直接打容器名字方便,不过这样已经很可以接受了
    qq565425677
        7
    qq565425677  
    OP
       2023-05-03 11:00:52 +08:00
    @hyperbin #5 这样确实是最方便的,就是 ipv6 支持的不好,只能通过 ipv6 访问,但是看到的 ip 是从 V6 转到 v4 的
    lovelylain
        8
    lovelylain  
       2023-05-03 12:24:18 +08:00   ❤️ 1
    @qq565425677 不固定 ip 也可以的,在容器网络里跑一个 dns 服务或者反代 dns 的容器,在 nginx 里改 /etc/resolve.conf 或者用 resolver 使用该 dns 容器,就可以在 nginx 里用容器名去反代了,但是对于个人使用来说,显然还是固定 ip 更省事。
    qq565425677
        9
    qq565425677  
    OP
       2023-05-03 13:10:43 +08:00
    @lovelylain #8 666 啊,很棒的思路
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2897 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 13:47 · PVG 21:47 · LAX 05:47 · JFK 08:47
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.