众所周知, 群辉默认占用了 80 端口, 443 端口. 而 zoffline 正好需要使用 80 和 443 端口, 如何解决呢?
其实我们可以通过自定义 docker 网络. 创建一个类型为 macvlan 的网络, 手动指定 ip 即可. 具体 ip 和网络需要结合内网实际情况进行尝试和修改.  内网环境- zoffline 内网网段: 192.168.0.1/24
- zoffline 的容器 ip, 一般来说为了避免冲突, 需要在内网子网下, 内网 DHCP 之外. (冲突可能性不是很大, 这里重叠也无所谓…
- 配置好 zoffline ip 之后, 在路由器 DHCP 页面看不到设备, 因为这属于静态 IP 指定.
确定群辉网卡名称❯ ifconfig | grep "192.168.0.50" -B 2 #替换成实际的 ip
ovs_eth0 Link encap:Ethernet HWaddr A8:B8:E0:01:E6:AD
inet addr:192.168.0.50 Bcast:192.168.0.255 Mask:255.255.255.0
|
查看通过无线 / 有线连接的设备方法一root@op:~# cat /proc/net/arp
IP address HW type Flags HW address Mask Device
192.168.1.183 0x1 0x0 00:00:00:00:00:00 * veth1
192.168.0.143 0x1 0x2 fa:a2:ba:82:3b:e4 * br-lan
192.168.1.19 0x1 0x0 00:00:00:00:00:00 * veth1
192.168.0.220 0x1 0x2 00:e0:4c:68:00:76 * br-lan
|
- Flags 标志可以表示是否在线状态,0x0 表示离线,标志 0x2 表示在线
- Device 表示接口的名称
方法二root@op:~# cat /tmp/dhcp.leases
1740534302 7a:c4:da:71:48:fa 192.168.0.109 * 01:7a:c4:da:71:48:fa
1740534269 b8:09:8a:50:c8:c7 192.168.0.238 IITII-HOME 01:b8:09:8a:50:c8:c7
|
部署创建 macvlan 类型网络根据上面的排查, 结果如下 - subnet 为 192.168.0.0/24
- gateway 为 192.168.0.1(直接填路由器 ip 即可)
- ip-range 指新创建的这个网络的子网范围, 这里设定为 192.168.0.220/31
- parent 代表父网卡, 这里为 ovs_eth0
- 最后的 zoffline 为 docker 网络名称
- 上述数值根据实际情况按需修改
docker network create -d macvlan
--subnet 192.168.0.0/24
--gateway=192.168.0.1
--ip-range=192.168.0.220/31
-o parent=ovs_eth0 zoffline
❯ docker network ls
NETWORK ID NAME DRIVER SCOPE
66eadb788d79 bridge bridge local
691ecfb35f7d host host local
c09e3197c443 none null local
ae89de5a95e3 zoffline macvlan local
|
docker-compose.yml# dc down && docker network rm zoffline
# dc up -d && docker exec -it zoffline sh
version: "3.3"
services:
zoffline:
image: zoffline/zoffline:latest
container_name: zoffline
networks:
# 这里的 ip 地址 和 network 名称需要一致
zoffline:
ipv4_address: 192.168.0.220
environment:
- TZ=Asia/Shanghai
volumes:
- ./storage/:/usr/src/app/zwift-offline/storage
ports:
- 80:80
- 443:443
- 3024:3024/udp
- 3025:3025
restart: unless-stopped
networks:
# 这里的 ip 地址 和 network 名称需要一致
zoffline:
external: true
|
启动- 执行 dc up -d && docker exec -it zoffline sh 即可
- 启动后访问对应 ip 即可
题外话: macvlan与host网络互通- 大体思路是: 多创建一个 macvlan 网络作为中转, 通过对 iptables 添加路由实现互通.
- 不过因为我的容器 本来就是独立部署的, 所以不需要macvlan与host网络互通.
添加 bot 之后内存占用 1.5GB+
|