Dockerコンテナ上でどんなキャプチャが流れてるかを確認したくて調べたのでメモ。
最初は、普通にコンテナ上にtcpdumpを入れてdocker execでbash経由でログインして確認してたのですが、
結構めんどくさい。また、Volumeとか切ってないと、tcpdumpの結果を取り出すのも一苦労。
そこで他の方法を探していたところ、Dockerのネットワークはホスト側のコンテナ接続用の仮想ブリッジ「docker0」を常に経由しているようです。
なので、
とすることで簡単にすべてのコンテナのパケットを取得することが出来ます。
docker0が仮想ブリッジになってるという事実をもうちょっと良く考えるべきでした。orz
単純に標準出力で取り出すだけだと解析がツライので、Wiresharkで解析したり、ヘッダ以外の情報も取れるようにしたりで、最終的には下記の様な形に。
$ sudo tcpdump -i docker0 -X -s 0 -w /tmp/mysql.cap
これをWiresharkとかで開くと下記のように見れます。