Ubuntu 20.04 下, Docker 容器如何获取和宿主机同一网段的独立 IP? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
blueboyggh
V2EX    Docker

Ubuntu 20.04 下, Docker 容器如何获取和宿主机同一网段的独立 IP?

 
  •   blueboyggh 2022-03-05 15:16:10 +08:00 3203 次点击
    这是一个创建于 1317 天前的主题,其中的信息可能已经有所发展或是发生改变。

    网上能找到电视盒子刷了 Armbian 以后使用 macvlan 实现的类似教程,这样可以用 Docker 弄出来一个 OpenWrt 来用,但是 Ubuntu 和 Armbian 的网络管理配置都是不一样的,不知道怎么把教程适配过去,求大神解惑

    18 条回复    2022-03-06 09:00:38 +08:00
    dcty
        1
    dcty  
       2022-03-05 15:19:16 +08:00 via iPhone
    一样的,连教程的命令几乎都一样
    blueboyggh
        2
    blueboyggh  
    OP
       2022-03-05 15:26:19 +08:00
    @dcty 但是 ubuntu 是 netplan 的 yaml 文件配置,armbian 是 /etc/network/interfaces 啊,这能一样吗?
    dcty
        3
    dcty  
       2022-03-05 16:16:35 +08:00 via iPhone
    @blueboyggh 和宿主没关系啊,docker 相关的命令一样的
    blueboyggh
        4
    blueboyggh  
    OP
       2022-03-05 16:23:23 +08:00
    @dcty 用 armbian 的教程,把 docker 容器设置好以后,宿主机是 ping 不同容器的 ip 的,需要在宿主机上做一些设置
    blueboyggh
        5
    blueboyggh  
    OP
       2022-03-05 16:43:43 +08:00
    @dcty 我已经按您说的,按照类似教程弄好了 docker 容器的独立 ip ,现在的问题就是宿主机 ping 不同容器的 ip ,但是局域网里其他的电脑可以,按网上的教程,这个就要编辑 armbian 的 /etc/network/interfaces ,但是 ubuntu 没这玩意啊,不知道怎么把 /etc/network/interfaces 里的命令转换到 netplan 里
    yanyumihuang
        6
    yanyumihuang  
       2022-03-05 17:51:13 +08:00
    //开启混杂模式
    sudo ip link set eth0 promisc on
    //在 etho 上增加接口
    ip link add macnet link eth0 type macvlan mode bridge
    //给接口制定 IP ,最好指定一个空闲 IP
    ip addr add 192.168.2.5/32 dev macnet
    //激活接口
    ip link set macnet up
    //增加一条路由。192.168.2.4 是 openwrt 的 IP
    ip route add 192.168.2.4/32 dev macnet
    上面的规则中的 IP 要根据你自己的情况进行更改
    macnet 是你创建 openwrt 的 docker 时的加入的网络。弄完之后给宿主机指定一个 dns ,223.5.5.5 。这样应该就 OK 了,缺点就是宿主机无法实现无感代理,宿主机访问外网需要手动设置各种代理。
    blueboyggh
        7
    blueboyggh  
    OP
       2022-03-05 18:25:04 +08:00 via Android
    @yanyumihuang 谢谢,我试试
    blueboyggh
        8
    blueboyggh  
    OP
       2022-03-05 19:38:14 +08:00 via Android
    @yanyumihuang 你这个方法,宿主机能 ping 通容器吗?
    yanyumihuang
        9
    yanyumihuang  
       2022-03-05 19:56:38 +08:00
    @blueboyggh 当然了。这个方法缺点就只有我说的那一个:宿主机需要手动设置各种软件的代理
    blueboyggh
        10
    blueboyggh  
    OP
       2022-03-05 20:30:01 +08:00
    @yanyumihuang 直接把宿主机的网关设置成 openwrt 的 ip ,把 openwrt 当做旁路由也可以吧?
    yanyumihuang
        11
    yanyumihuang  
       2022-03-05 20:42:01 +08:00
    @blueboyggh 你可以试试,我这边是不行的
    blueboyggh
        12
    blueboyggh  
    OP
       2022-03-05 20:50:21 +08:00
    @yanyumihuang 好的,知道了,感谢您
    2NUT
        13
    2NUT  
       2022-03-05 20:51:59 +08:00
    docker-compose 里指定 该容器的 network 为 host 模式
    blueboyggh
        14
    blueboyggh  
    OP
       2022-03-05 21:09:02 +08:00
    @2NUT host 模式就和宿主机共用 ip 了吧?没有自己的 ip 吧?
    blueboyggh
        15
    blueboyggh  
    OP
       2022-03-05 21:26:29 +08:00
    @yanyumihuang 测试了一下,确实不行。如果宿主机是 armbian ,按照 https://www.jianshu.com/p/8d4229b087f7 的设置后,docker 的 openwrt 容器就可以作为旁路由使用,您有时间能不能看看这个教程第 7 步的 armbian 配置文件能翻译成 ubuntu 的 yaml 配置吗?
    iBugOne
        16
    iBugOne  
       2022-03-06 05:29:19 +08:00 via Android
    别纠结那么多,直接干掉 netplan ,安装 ifupdown ,你就能用上熟悉的 /etc/network/interfaces 了。

    网络配置方案没有哪个好哪个不好,挑顺手的就行,我装 Ubuntu Server 第一件事就是干掉 snap 和 netplan ,自己动手配 systemd-networkd
    blueboyggh
        17
    blueboyggh  
    OP
       2022-03-06 07:38:10 +08:00 via Android
    @iBugOne 哈哈…感谢…求问怎么干掉 netplan…
    yanyumihuang
        18
    yanyumihuang  
       2022-03-06 09:00:38 +08:00 via Android
    @blueboyggh 我也是东拼西凑的。实力不行,做不到
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3490 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 04:40 PVG 12:40 LAX 21:40 JFK 00:40
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86