我正在使用docker中的微服务开发一个系统,我想分析在给定docker网络中运行的不同docker容器的网络流量。
现在我有一个运行supervisord的容器并连接到主机网络以访问主机的界面,如下所示:
Dockerfile:
FROM debian
ENV PCAP_READ_DIR '/data'
RUN apt-get update && apt-get -y -q install \
tcpdump supervisor && \
apt-get clean
COPY . /app/
WORKDIR /app
CMD ["/usr/bin/supervisord", "-c", "/etc/supervisord.conf"]
supervisord.conf:
[supervisord]
nodaemon=true
[program:init_script]
command=/app/init.sh
numprocs=1
process_name=%(program_name)s_%(process_num)02d
redirect_stderr: true
autorestart: false
startretries=0
我的init.sh脚本最终将在后台运行可变数量的tcpdump进程。
init.sh:
...etc..
while :
do
info "Watch the wlp3s0 interface"
tcpdump -s 0 -c 10 -w "data/pcap/default_br-1234_%Y-%m-%d_%H:%M:%S.pcap"
sleep 3
done
容器正常执行并且tcpdump甚至在前台运行,生成pcap但没有数据反映主机上发生的网络流量(例如访问给定网站)。
[编辑]:这是我执行以运行docker容器的命令:
docker run --rm -it \
-v "$PWD":/app \
-v "$PWD"/data:/app/data \
-v "$PWD"/supervisord.conf:/etc/supervisord.conf \
-p 1234:80 \
--network host \
--name docker-watcher \
-e MODE=development \
docker-watcher