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

2022-03-05 15:16:10 +08:00
 blueboyggh

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

2570 次点击
所在节点    Docker
18 条回复
dcty
2022-03-05 15:19:16 +08:00
一样的,连教程的命令几乎都一样
blueboyggh
2022-03-05 15:26:19 +08:00
@dcty 但是 ubuntu 是 netplan 的 yaml 文件配置,armbian 是 /etc/network/interfaces 啊,这能一样吗?
dcty
2022-03-05 16:16:35 +08:00
@blueboyggh 和宿主没关系啊,docker 相关的命令一样的
blueboyggh
2022-03-05 16:23:23 +08:00
@dcty 用 armbian 的教程,把 docker 容器设置好以后,宿主机是 ping 不同容器的 ip 的,需要在宿主机上做一些设置
blueboyggh
2022-03-05 16:43:43 +08:00
@dcty 我已经按您说的,按照类似教程弄好了 docker 容器的独立 ip ,现在的问题就是宿主机 ping 不同容器的 ip ,但是局域网里其他的电脑可以,按网上的教程,这个就要编辑 armbian 的 /etc/network/interfaces ,但是 ubuntu 没这玩意啊,不知道怎么把 /etc/network/interfaces 里的命令转换到 netplan 里
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
2022-03-05 18:25:04 +08:00
@yanyumihuang 谢谢,我试试
blueboyggh
2022-03-05 19:38:14 +08:00
@yanyumihuang 你这个方法,宿主机能 ping 通容器吗?
yanyumihuang
2022-03-05 19:56:38 +08:00
@blueboyggh 当然了。这个方法缺点就只有我说的那一个:宿主机需要手动设置各种软件的代理
blueboyggh
2022-03-05 20:30:01 +08:00
@yanyumihuang 直接把宿主机的网关设置成 openwrt 的 ip ,把 openwrt 当做旁路由也可以吧?
yanyumihuang
2022-03-05 20:42:01 +08:00
@blueboyggh 你可以试试,我这边是不行的
blueboyggh
2022-03-05 20:50:21 +08:00
@yanyumihuang 好的,知道了,感谢您
2NUT
2022-03-05 20:51:59 +08:00
docker-compose 里指定 该容器的 network 为 host 模式
blueboyggh
2022-03-05 21:09:02 +08:00
@2NUT host 模式就和宿主机共用 ip 了吧?没有自己的 ip 吧?
blueboyggh
2022-03-05 21:26:29 +08:00
@yanyumihuang 测试了一下,确实不行。如果宿主机是 armbian ,按照 https://www.jianshu.com/p/8d4229b087f7 的设置后,docker 的 openwrt 容器就可以作为旁路由使用,您有时间能不能看看这个教程第 7 步的 armbian 配置文件能翻译成 ubuntu 的 yaml 配置吗?
iBugOne
2022-03-06 05:29:19 +08:00
别纠结那么多,直接干掉 netplan ,安装 ifupdown ,你就能用上熟悉的 /etc/network/interfaces 了。

网络配置方案没有哪个好哪个不好,挑顺手的就行,我装 Ubuntu Server 第一件事就是干掉 snap 和 netplan ,自己动手配 systemd-networkd
blueboyggh
2022-03-06 07:38:10 +08:00
@iBugOne 哈哈…感谢…求问怎么干掉 netplan…
yanyumihuang
2022-03-06 09:00:38 +08:00
@blueboyggh 我也是东拼西凑的。实力不行,做不到

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/838183

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX