群晖创建桥接网络-使容器和路由器一个网段
终端中输入ip addr
查看网络信息,找到你群晖ip地址所在的那行

我的是群晖IP所在网络接口是ovs_eth0
,我估计大部分单网口的应该都是这个数值,复制这个ovs_eth0

2020.04.23 更新
打开网卡混杂模式
1
2
|
# 打开网卡混杂模式 ip link set ovs_eth0 promisc on |
接下来创建docker桥接网络:bridge-host
1
2
3
4
5
|
docker network create -d macvlan --subnet=192.168.99.0/24 --gateway=192.168.99.1 -o parent=ovs_eth0 bridge-host |
需要自己修改的地方我都备注了是什么意思,大家需要根据自己的情况自行修改

注意!
一旦选错网口,虽然这个桥接网络可以创建,但是创建容器指定这个网络的时候将会提示Docker API失败。请访问Docker日志以获得更多信息。
,所以一定要看好我一开始就看成eth0了,结果怎么弄都出错,后来一细看,原来搞错了
创建出于这个桥接网络下的容器
如图所示,在创建容器的网络页面添加这个网络,之后删除群晖默认的桥接网络



这样创建的容器的IP是不固定的,重启容器的时候可能会变,并且也不太好查ip,需要进路由器里看

所以我建议是在终端里创建容器,并指定ip,群晖的docker控制台实在是太简陋了,虽然易用,但是这种功能都不集成
创建容器并指定ip
1
|
docker create --name plex --network bridge-host --ip=192.168.1.5 linuxserver/plex |

简单说明一下,用create容器是因为,大量的基础设置都没做,可以创建完容器后修改容器配置

这样创建好的容器可以一个容器占用一个ip的所有端口,所以也就不需要做端口转发了,很多容器的高级功能都需要在这样的网络下,所以有的时候还是会用得上。
emby的话,需要DLNA功能也需要这样创建容器
docker macvlan 官方文档
docker macvlan 官方文档写的非常详细,有具体的例子可以参考
https://docs.docker.com/network/macvlan/#bridge-mode
有些应用程序,特别是传统的应用程序或监控网络流量的应用程序,希望直接连接到物理网络。在这种类型的情况下,你可以使用macvlan网络驱动为每个容器的虚拟网络接口分配一个MAC地址,使其看起来是一个直接连接到物理网络的物理网络接口。在这种情况下,你需要在你的Docker主机上指定一个物理接口用于macvlan,以及macvlan的子网和网关。你甚至可以使用不同的物理网络接口来隔离你的macvlan网络。请记住以下几点。
由于IP地址耗尽或 “VLAN扩散”,很容易在无意中损坏你的网络,这是你的网络中的唯一MAC地址数量不当的情况。
你的网络设备需要能够处理 “混杂模式”,即一个物理接口可以分配多个MAC地址。
如果你的应用可以使用桥接(在单个Docker主机上)或叠加(在多个Docker主机之间进行通信),从长远来看,这些解决方案可能会更好。