kkamegawa's weblog

Visual Studio,TFS,ALM,VSTS,DevOps関係のことについていろいろと書いていきます。Google Analyticsで解析を行っています

Dockerコンテナ内でパケットキャプチャするときのメモ

ネットワークに起因するトラブル調べようとすると最終的にパケットキャプチャしないといけないことがしばしばあります。通常はWiresharkなどを使うのでしょうが、Docker内ではそのまま使えないので、tcpdumpでキャプチャすることになりますが、イメージに入っているとは限らないしというか、多分入っていないし、余計なものを追加したくもない。

ということで、tcpdumpが入っているイメージを作って、特定のコンテナにアタッチすればいいようです。

FROM alpine
RUN apk add --no-cache tcpdump
 docker build -t debugtcpdump .

これでdebugtcpdumpというイメージができるので、キャプチャすると。ただし、このままだとコンテナ内でキャプチャしたファイルが揮発してしまうので、ボリュームマウントしておきます。

 docker run -it -v /mnt/c/temp/:/tmp --rm --net container:対象コンテナ名 debugtcpdump tcpdump -nn -X port 80 -w /tmp/web_dump.output

(WSL2で実行しています)

これでコンテナ内の80/tcpに対してキャプチャができて、c:\temp\web_dump.outputというファイルができます。今回はパケットキャプチャだけなのでtcpdumpだけでいいですが、各種調査用のツールが入ったイメージが公開されています。

hub.docker.com

どこの調査で何使えばいいか載っていてすごい。