楔子
入手百里后就想着让其物尽其用,就在打算在上面跑些Docker,比如博客或者其它一些服务。但有些服务需要独立IP,以方便管理或使用。就按之前在群晖上创建Macvlan网络的方法,创建一个Docker Macvlan网络,再额外创建一个Macvlan类型的桥接网络让Macvlan网络上的容器能与宿主机通讯。但是创建后这招在OpenWrt上不灵了,Macvlan网络上的容器死活不能访问OpenWrt,不能访问OpenWrt也就不能访问互联网。
就在Google上搜索了一下也没有搜索到有用的信息,然后就在Docker论坛发帖咨询此事,到了深夜写这篇文章时Docker论坛也没有回帖。今晚闲着没事就又Google了一下,偶然发现了解决办法,这里记录下来以方便以后使用。
其实这里并不是使用Macvlan网络,而是使用的桥接的方式,所以标题和本篇文章解决方法根本不是一回事,只是为了方便大家通过搜索引擎找到我这篇文章,给大家解决此问题。
正文
首先在创建桥接网络。名称随意;驱动选择网桥设备
;选项填写com.docker.network.bridge.name=br-lan
,填写完后要点击后面的+号,就像我的图片一样。子网填写OpenWrt的网段加子网掩码,网关填写OpenWrt的IP。
然后在创建容器时选择网建创建的网络以及要分配给该容器的IP。
然后运行该容器。可以看到容器可以ping通OpenWrt,当然能ping通OpenWrt也能ping通网络,这样该容器就可以访问网络了。
如果你是使用的Portainer可以按照以下示例创建该类型网络。
然后给容器分配网络和设置IP地址即可。
或者如果你喜欢使用命令行:
docker network create -d bridge \
--subnet=10.10.10.0/24 --gateway=10.10.10.1 \
-o "com.docker.network.bridge.name"="br-lan" vlan