Docker は、アプリケーションを迅速にデプロイして実行するために使用できるコンテナ化テクノロジです。ただし、実際の運用中、コンテナをより適切に監視および管理するために、Docker コンテナの送受信メッセージを理解する必要がある場合があります。
この記事では、tcpdump と Wireshark を使用したパケットのキャプチャなど、Docker コンテナの送受信パケットをキャプチャする方法を紹介します。
1. tcpdump を使用してパケットをキャプチャする
Linux システムで、次のコマンドを使用して tcpdump をインストールします:
sudo apt-get install tcpdump
次のコマンドを使用して、実行中のコンテナ ID を取得します。
docker ps
次のコマンドを使用して、コンテナのシェル環境を入力します:
docker exec -it <ContainerID> /bin/bash
ここで、<ContainerID>
はターゲット コンテナの ID です。
コンテナ内で次のコマンドを実行して、受信パケットと送信パケットをキャプチャします:
tcpdump -i any -s 0 -w /tmp/docker.pcap
その中に、-i any
はすべてのネットワーク カードを監視することを意味し、-s 0
はすべてのデータ パケットをキャプチャすることを意味し、-w
パラメータはキャプチャされたパケットを指定されたファイルに書き込むことを指定します。上記のコマンドでは、受信パケットと送信パケットを /tmp/docker.pcap ファイルに書き込みます。
コンテナ内で次のコマンドを実行してコンテナを終了します:
exit
次のコマンドを使用して、コンテナ内の /tmp/docker.pcap ファイルをローカルにコピーします。
docker cp <ContainerID>:/tmp/docker.pcap .
ここで、<ContainerID>
は、ターゲットコンテナのID。
Wireshark を使用して docker.pcap ファイルを開き、コンテナーの受信メッセージと送信メッセージを表示します。
2. Wireshark を使用してパケットをキャプチャする
Linux システムで、次のコマンドを使用して Wireshark をインストールします:
sudo apt-get install wireshark
次のコマンドを使用して、実行中のコンテナの IP アドレスを取得します。
docker inspect <ContainerID> | grep IPAddress
その中に、 <ContainerID>
はターゲットのコンテナ ID です。
ターミナルに次のコマンドを入力して Wireshark を起動します:
sudo wireshark
Wireshark インターフェイスに入ったら、必要なネットワーク カードを選択します。
ip.addr == <ContainerIP>
このうち、<ContainerIP>
は対象コンテナの IP アドレスです。
コンテナの送受信パケットのキャプチャを開始し、Wireshark の [キャプチャの開始] ボタンをクリックします。
Wireshark でコンテナの受信メッセージと送信メッセージを表示できます。
この記事では、tcpdump と Wireshark を使用して Docker コンテナの送受信メッセージをキャプチャする方法を紹介します。これは、Docker コンテナの監視と管理を向上させるのに役立ちます。同時に、パケット キャプチャには特定のリスクが伴う可能性があるため、慎重に使用する必要があることに注意してください。
以上がDockerコンテナの送受信メッセージをキャプチャする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。