该方案是建立一个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
服务正在ping first
服务。 watcher
可以使用network_mode: host
进行监视。由于ping first
在watcher
内部是不可能的,因为IP地址已经过硬编码,因此watcher
正在使用例如改为ping 172.25.0.11
。
br-*
发送到动态组成的网桥tcpdump
的包都具有“物理”访问权限(目前是通过host
网络实现的?]]host
和bridge
网络的功能,例如还通过使用不同的驱动程序甚至自定义插件?我研究了驱动程序macvlan
和ipvlan
(L2,Docker),但无法监控所有组合服务之间的流量。谢谢您的任何反馈或提示。我使用overlay
网络研究了服务发现(领事等),这对我的场景来说感觉有点太多(不使用其中的大多数功能)。
该方案是构建一个监视程序容器,该容器能够侦听给定的docker-compose服务组合上的任何网络流量。除此之外,我还必须直接让观察者...
这是一个老问题,但我提供此作为参考。