前言
最近辉哥在搞docker的时候发现内网访问群晖docker必须加上端口号才能访问,这样间接的导致了局域网的可玩性,所以今天辉哥就来升级一下
创建桥接网络 macvlan
打开群晖》控制面板》网络》网络界面》管理》Open vSwitch 设置》启用 Open vSwitch
使用ssh工具进入群晖,切换root权限,终端中输入ip addr
查看网络信息,找到你群晖ip地址所在的那行
查看群晖已启用网络
开始桥接
docker network create -d macvlan --subnet=10.0.11.0/24 --gateway=10.0.11.1 --ip-range=10.0.11.2/24 -o parent=ovs_eth1 局域网210.0.11.0/24为你的内网地址
10.0.11.1为你的网关地址
10.0.11.2/24为网段
最后的局域网2为名称,可以自定义
桥接后的docker网络
创建桥接网络下的容器
如图所示,在创建容器的网络页面添加这个网络
这样创建的容器的IP是不固定的,重启容器的时候可能会变,并且也不太好查ip,需要进路由器里看
所以我建议是在终端里创建容器,并指定ip,群晖的docker控制台实在是太简陋了,虽然易用,但是这种功能都不集成
创建容器并指定ip
docker create --name portainer --network 局域网2 --ip=10.0.11.3 6053537/portainer-ce简单说明一下,用create容器是因为,大量的基础设置都没做,可以创建完容器后修改容器配置
这样创建好的容器可以一个容器占用一个ip的所有端口,所以也就不需要做端口转发了,很多容器的高级功能都需要在这样的网络下,所以有的时候还是会用得上。
最终效果
docker macvlan 官方文档
docker macvlan 官方文档写的非常详细,有具体的例子可以参考
https://docs.docker.com/network/macvlan/#bridge-mode
有些应用程序,特别是传统的应用程序或监控网络流量的应用程序,希望直接连接到物理网络。在这种类型的情况下,你可以使用macvlan网络驱动为每个容器的虚拟网络接口分配一个MAC地址,使其看起来是一个直接连接到物理网络的物理网络接口。在这种情况下,你需要在你的Docker主机上指定一个物理接口用于macvlan,以及macvlan的子网和网关。你甚至可以使用不同的物理网络接口来隔离你的macvlan网络。请记住以下几点。
由于IP地址耗尽或 “VLAN扩散”,很容易在无意中损坏你的网络,这是你的网络中的唯一MAC地址数量不当的情况。
你的网络设备需要能够处理 “混杂模式”,即一个物理接口可以分配多个MAC地址。
如果你的应用可以使用桥接(在单个Docker主机上)或叠加(在多个Docker主机之间进行通信),从长远来看,这些解决方案可能会更好。
辉哥现用的网络拓图
参考文献
结尾
如有其他疑问请在评论区留言!