V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
qq565425677
V2EX  ›  问与答

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

  •  
  •   qq565425677 · May 1, 2023 · 2512 views
    This topic created in 1094 days ago, the information mentioned may be changed or developed.
    我之前用一直自建的 bridge ,但是客户端使用 ipv6 网络访问时,地址会在 docker 容器中转换成内部 ipv4 ,一般的使用上没什么问题,但总归不爽。听说 docker 开启容器内 ipv6 支持比较麻烦而且还有 bug 所以暂时不想折腾。

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

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

    优点:完美支持 ipv6

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

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

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