银行Mac环境下Testcontainers连接拒绝问题排查求助
排查Mac上Testcontainers/Rancher间歇性连接拒绝问题的方法
一、Mac上替代Windows Process Monitor的工具
- Activity Monitor(系统自带):无需额外安装,切换到「网络」标签,筛选docker、rancher相关进程,可实时监控TCP/UDP连接状态,排查连接拒绝时是否存在端口占用或进程异常。
- lsof(命令行工具):系统自带,用于端口占用排查。例如怀疑某端口被占用时,执行
lsof -i :<端口号>查看占用进程;实时监控指定进程网络活动可执行lsof -p <进程PID> -r 1(每1秒刷新一次)。 - tcpdump(命令行抓包):系统自带,可抓取网络包分析连接失败细节。针对容器所在网络接口抓包:
tcpdump -i docker0 host <容器IP> and port <容器端口> -w capture.pcap,生成的pcap文件可直接用tcpdump分析,或导入Wireshark(若环境允许安装)查看是SYN无响应还是RST包被返回。 - Little Snitch(需申请权限安装):可视化监控所有进程的网络请求,能直观定位是否有进程拦截连接,适合排查隐蔽的网络阻断行为。
二、Shell脚本辅助排查
1. 实时监控容器端口可达性
循环测试容器端口连通性,自动记录失败时间与端口占用情况:
#!/bin/bash CONTAINER_IP="你的容器IP" CONTAINER_PORT="你的容器端口" LOG_FILE="connection_test.log" while true; do TIMESTAMP=$(date "+%Y-%m-%d %H:%M:%S") if nc -z -w 2 $CONTAINER_IP $CONTAINER_PORT; then echo "$TIMESTAMP: 连接成功" >> $LOG_FILE else echo "$TIMESTAMP: 连接拒绝(错误码:$?)" >> $LOG_FILE lsof -i :$CONTAINER_PORT >> $LOG_FILE echo "---" >> $LOG_FILE fi sleep 5 done
替换占位符后,执行chmod +x test_connection.sh && ./test_connection.sh即可运行。
2. 监控Docker/Rancher进程状态
实时检查核心进程运行状态:
#!/bin/bash LOG_FILE="process_monitor.log" while true; do TIMESTAMP=$(date "+%Y-%m-%d %H:%M:%S") if pgrep -x "dockerd" > /dev/null; then echo "$TIMESTAMP: Docker daemon 运行正常" >> $LOG_FILE else echo "$TIMESTAMP: Docker daemon 已停止" >> $LOG_FILE fi if pgrep -x "rancher-agent" > /dev/null; then echo "$TIMESTAMP: Rancher Agent 运行正常" >> $LOG_FILE else echo "$TIMESTAMP: Rancher Agent 已停止" >> $LOG_FILE fi echo "---" >> $LOG_FILE sleep 10 done
三、安全软件相关排查
即使已禁用部分工具,银行环境可能存在隐藏安全组件:
- 检查系统完整性保护(SIP)状态:执行
csrutil status,确认近期是否有SIP规则更新限制容器网络活动。 - 核查MS Defender规则:打开「系统设置」→「隐私与安全性」→「防火墙」,查看是否存在针对Docker/Rancher的拦截规则;或执行
sudo pfctl -s rules查看防火墙规则列表。 - 排查隐形代理:执行
networksetup -listallnetworkservices查看未知网络服务,再用networksetup -getwebproxy <服务名>检查是否有后台运行的未禁用代理。
四、Testcontainers/Rancher自身排查
- 查看Testcontainers日志:默认路径
~/.testcontainers/logs,检查连接失败时容器是否未完全启动就被测试请求访问。 - 重启核心服务:执行
brew services restart docker(Homebrew安装的Docker)或sudo systemctl restart docker(原生Docker),重启后重新运行测试验证问题是否缓解。
内容的提问来源于stack exchange,提问作者user3465651
相关产品推荐
相关产品推荐

