如何将Docker Macvlan驱动程序的范围从Local扩展到Swarm

我正在处理一个需求,我们需要创build一个主机服务器不应该访问容器的networking 。 我们已经实现了使用Docker Macvlan Network的单服务器,并且在使用Docker swarm将其扩展到群集时意识到Macvlan驱动程序范围是本地的。

# docker network ls NETWORK ID NAME DRIVER SCOPE c1e162df6ba0 bridge bridge local dd4c37820549 docker_gwbridge bridge local c88f997a2fa7 host host local 3afvn8qnwl1f ingress overlay swarm c4899a391b91 isolated_nw1 macvlan local 1df2947aad7b none null local 31tlgcm33m3b swarm_network overlay swarm 

所以我的问题是可以创build一个networking使用macvlan驱动程序,可以扩展到群

如果macvlan不可能,我们可以做到这一点的方式是什么

Macvlan驱动程序不能扩展到Swarm。 此时只有覆盖驱动程序可以扩展到Swarm( https://docs.docker.com/engine/extend/plugins_network/ )。 您是使用macvlan驱动程序阻止主机与容器通话或容器直接到达底层networking的原因? 如果你只是想容器不与主机通话,你可以使用覆盖networking。 覆盖networking中的容器有2个接口,1个覆盖和另一个docker_gwbridge。 无法从主机访问覆盖networking中的地址。 docker_gwbridge中的地址仍然可以从主机访问。

如果有兴趣的话,可以在下一个版本中使用Swarm模式的本地范围的Docker驱动程序。 这可以让你使用群集等Macvlan 17.06的示例用法可以在这里find: https : //github.com/mark-church/docs/blob/master/local-scope-swarm-networking.md有指示得到二进制安装和各种驱动程序的例子。 干杯。