Docker中的`host`和`link`组合网络

时间:2019-04-22 12:14:10

标签: docker docker-compose tcpdump docker-networking

该方案是建立一个watcher容器,该容器能够侦听给定docker-compose服务组合上的任何网络流量。除此之外,watcher必须直接将数据包发送到专用服务。

我发现host上的watcher网络基本上是我想要的(包括可能对Docker引擎管理的所有网络设备包含过多信息的暗示)。为了将通信直接定位到任何服务,似乎需要使用link设置-与host的网络相矛盾。

当前的docker-compose.yaml

(完整的配置可在https://github.com/ohader/docker-watcher-demo上找到)

version: "3.7"

services:
  watcher:
    build:
      context: ./custom
    network_mode: host
    entrypoint: "tcpdump -i any"

  first:
    build:
      context: ./custom
    networks:
      default:
        ipv4_address: 172.25.0.11
    entrypoint: "sleep infinity"

  second:
    build:
      context: ./custom
    networks:
      default:
        ipv4_address: 172.25.0.22
    entrypoint: "ping first"

networks:
  default:
    ipam:
      driver: default
      config:
        - subnet: "172.25.0.0/16"

基本上,second服务正在对first服务执行ping操作。 watcher可以使用network_mode: host进行监视。 由于ping firstwatcher内部是不可能的,因为IP地址已经过硬编码,因此watcher正在使用例如改为ping 172.25.0.11

问题

  • 是否有更好的方法可以使使用br-*(当前通过使用tcpdump网络发送到动态组成的网桥host的所有程序包具有“物理”访问权?)< / li>
  • 有没有一种方法可以将hostbridge网络的功能结合起来,例如还通过使用不同的驱动程序甚至自定义插件?我研究了驱动程序macvlanipvlan(L2, Docker),但无法监视所有组合服务之间的流量。

在此先感谢您的任何反馈或提示。我使用overlay网络研究了服务发现(领事等),这对于我的情况(不使用其中的大多数功能)感觉有点过多。

0 个答案:

没有答案