记录opwrt下docker使用macvlan配置文件
因某些原因opwet下docker端口直接暴露在wan口直通公网,在各种配置iptables无果后决定使用macvlan方式管理docker网络。
一是本人docker部署不多,二是可以固定容器IP,三是网络界面看起来比较清爽。不然每个docker会默认创建一个网络。
首先给在op上创建一个macvlan网络,信息根据实际情况填写。

随后修改容器的ymal,不同版本,不同设置导致的配置写法不同,此处作为备忘录。以贴吧签到举例
version: "2.0"
services:
web:
image: moenetwork/tieba-cloud-sign
environment:
- PUID=1000 # 可修改为你想以什么用户运行caddy,该用户的UID
- PGID=1000 # 可修改为你想以什么用户运行caddy,该用户的UID
- DB_HOST=db:3306
- DB_USER=root
- DB_PASSWD= # 数据库密码
- DB_NAME= # 数据库名
- CSRF=true
# - TC_AUTO_CREATE_INSTALL_LOCK=true # 如果希望自动创建install.lock请解除此注释
#volumes: # 如果重新创建或更新镜像希望保留之前的所有信息,请解除此两行注释
#- ./install.lock:/var/www/setup/install.lock # 在当前目录下自行新建文件install.lock,内容为:1
ports:
- 8080:8080
networks: #设置容器固定ip
macvlan: #设置容器固定ip,使用网络macvlan
ipv4_address: x.x.x.x #设置容器固定ip
links:
- db
depends_on:
- db
db:
image: agrozyme/mariadb #如若此镜像在你的平台上不可用,可以自行搜索你平台可用的mariadb镜像
environment:
- MYSQL_ROOT_PASSWORD=
- MYSQL_PASSWORD=
- MYSQL_DATABASE=tiebacloud
volumes:
- ./mysql:/var/lib/mysql
- ./mysql:/var/log/mysql
networks: #设置容器固定ip
macvlan: #设置容器固定ip使用网络macvlan
ipv4_address: x.x.x.x #设置容器固定ip
networks:
macvlan: #定义网络名称
external: true #不创建网络使用外部网络
此处以青龙举例
version: '3'
services:
web:
# alpine 基础镜像版本
image: whyour/qinglong:latest
# debian-slim 基础镜像版本
# image: whyour/qinglong:debian
volumes:
- ./data:/ql/data
ports:
- "5700:5700"
networks:
macvlan:
ipv4_address: x.x.x.x
environment:
# 部署路径非必须,以斜杠开头和结尾,比如 /test/
QlBaseUrl: '/'
restart: unless-stopped
networks:
macvlan:
external: true
网上也有如下写法,但在我这里使用会创建默认网络或报错,但docker运行正常
networks:
default:
external:
name: macvlan #使用已存在的网络
#或如下写法
networks:
macvlan:
driver: bridge
