docker中的多个后台tcpdump进程

时间:2017-04-18 07:32:48

标签: docker tcpdump

我正在使用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

0 个答案:

没有答案