docker container里如何使用tcpdump
参考的原文:
https://medium.com/@xxradar/how-to-tcpdump-effectively-in-docker-2ed0a09b5406
- 创建一个tcpdump image,当然可以取任意名字啦。
$ docker build -t tcpdump - <<EOF
FROM oraclelinux
RUN yum install -y tcpdump
CMD tcpdump -i eth0
EOF
当然可以从ubuntu创建,我这个例子使用了oraclelinux,因为比较熟悉。
另外如果在build image的时候需要设置proxy,那么:
$ export PROXY=http://<host>:<port>
$ docker build -t tcpdump --build-arg http_proxy=${PROXY} --build-arg https_proxy=${PROXY} ...
- 监听目标contianer
$ TARGETCONT=wwwnginx
$ docker run -it --net=container:${TARGETCONT} tcpdump
- 监听指定端口
$ docker run -it --net=container:${TARGETCONT} tcpdump tcpdump -N -A 'port 8080'
$ docker run -it --net=container:${TARGETCONT} tcpdump tcpdump -s 0 tcp port 8080 -w loghttp.cap
- 假设wwwnginx的服务在容器内监听在端口8080
- 第一个tcpdump是image名字,第二个tcpdump是执行的命令名字,这样覆盖了image的默认命令行。
- "-w" 参数是把输出写到文件(注意这里会到容器内去),然后文件可以拷贝出来用wireshark进行分析。
网友评论