御风灰灰
发布于 2024-07-11 / 49 阅读
0
0

群晖系统docker中macvlan网络

1. macvlan说明

MACVLAN的作用
macvlan网络模式的docker容器,可以看作是局域网内的一个独立设备,它会有一个独立的内网IP。每个macvlan下的docker容器,都有自己一套完整的端口可用,不会互相冲突。

2. 群晖配置

  1. 创建macvlan
  2. 启用Open vSwitch

路径:控制面板-网络-网络界面-管理-Open vSwitch 设置

nas-synology-docker-manvlac-openvswitch.png

  1. 查看网卡

ip addr 查看NAS网卡情况 确认Open vSwitch功能是否打开。

nas-synology-docker-manvlac-openvswitch-check.png

3. macvlan扩展操作

3.1 macvlan与主机互联

因macvlan网络的特殊性,导致使用macvlan的docker网络无法与主机网络互通,但是macvlan与macvlan是可以互通的,因此采用一下方式中转

3.1.1 创建虚拟网络

创建一个基于macvlan的虚拟网络接口

ip link add switch link ovs_eth0 type macvlan mode bridge
ip addr add 192.168.99.3 dev switch
ip link set switch up

3.1.2 增加路由

增加需要通信的主机到路由表中

ip route add 192.168.99.20 dev switch

3.1.3 网络访问

在macvlan中的网络访问主机
在docker主机中访问 192.168.99.3网络即可连接到主机。

3. 群晖中创建docker网络

3.1. 查看docker的网络

docker network ls

目前默认只有三种网络模式

bridge、host、none三种网络模式是什么原理作用,大家自行百度即可。

如果已经有driver为macvlan的docker网络,可以执行 docker network rm name 来进行删除,name为macvlan网络实际名称,即图上的NAME栏参数。

确认docker网络中没有macvlan网络,我们再进行下一步。

3.2 创建自定义macvlan网络

# 仅ipv4
docker network create -d macvlan --subnet=192.168.50.0/24 --gateway=192.168.50.1 -o parent=ovs_eth0 name

# ipv4&ipv6双栈
docker network create -d macvlan --subnet=192.168.50.0/24 --gateway=192.168.50.1 --ipv6 --subnet=2008::/60 --gateway=2008::1 -o parent=ovs_eth0 name

说明:
docker network create -d macvlan #指定创建的网络类型是macvlan

--subnet=192.168.50.0/24 #macvlan的ipv4网段,这里写你的内网网段即可。

--gateway=192.168.50.1 #macvlan的ipv4网关,这里写您需要容器走的网关。

--ipv6 #启用ipv6支持

--subnet=2408::/60 #macvlan的ipv6前缀

--gateway=2408::1 #macvlan的ipv6网关

-o parent=ovs_eth0 #桥接网络走的是ovs_eth0接口,如果你的接口不是这个,请自行更改。

name #macvlan网络的名称(可以自定义)

3.3 创建docker容器

  1. 通过macvlan 启动docker
docker run -d --name=ttnode3 --net=macv --ip=192.168.50.23 -v  /volume4/data/m/node3:/mnt/data/ttnode  tiptime/ttnode:latest

参考地址


评论