生产环境中 Docker 挑战应对指南
1. 使用 Docker 调试网络问题
在 Docker 提供的隔离网络环境中调试网络问题,比在不受控的环境中容易得多。在半夜尝试记住tcpdump的正确参数以过滤无关数据包,是一个容易出错的过程。使用nsenter,可以在不安装tcpdump的情况下捕获容器内的所有内容。
2. 使用 tcpflow 进行实时调试
tcpdump是网络调查的事实标准,但它在显示两个程序之间的应用层数据流方面功能有限。当调查两个应用程序通信的问题时,这一点非常重要。
2.1 问题描述
需要监控容器化应用程序的通信数据。
2.2 解决方案
使用tcpflow捕获通过接口的流量。tcpflow与tcpdump类似,但它能更好地洞察应用程序数据流。如果系统包管理器中没有tcpflow,可以使用 Docker 镜像:
$ IMG=dockerinpractice/tcpflow $ docker pull $IMG $ alias tcpflow="docker run --rm --net host $IMG"使用tcpflow与 Docker 有两种方式: