在Docker覆盖networking上的ACL

我有一个相对较大的Docker群,其上运行着数十个微型Web服务。

由于这些服务中只有两个或三个需要外部访问,因此大部分的集装箱间/服务通信都是通过一个覆盖networking进行的。

为了加强平台的安全性,我想在覆盖networking上加上一些基于服务名称的访问控制,以防止容器“串扰”。

似乎没有一个明显的方式来做这件事,并为每个服务链接创build一个新的覆盖networking似乎有点难以pipe理?

我希望完成的是:

$ docker network create myoverlay -d overlay $ docker service create --name web1 --net myoverlay apache $ docker service create --name web2 --net myoverlay nginx $ docker service create --name database1 --net myoverlay mysql $ docker service create --name database2 --net myoverlay cassandra web1 -> database1 //allowed web2 -> database2 //allowed web1 -> database2 //denied web2 -> database1 //denied