第一章 门诊接待:认识Docker网络
凌晨三点,你的容器突然集体"失聪"。监控大屏上,网络不通的警示灯闪得比夜店霓虹还耀眼。端口映射失败像多米诺骨牌接连倒下,而DNS解析异常则在日志里刷着存在感。这三个网络急诊室常客,正等着我们逐一攻克。
本指南基于Docker CE 24.0.7 + Linux内核5.15环境,我们准备了完整的症状清单和诊疗方案。请系好安全带,我们的网络故障排查旅程即将开始。
第二章 首诊病例:容器网络连接故障
场景还原
刚部署的Web服务容器无法访问数据库容器,两个容器明明都在运行却像身处平行时空。就像住在同一栋楼却找不到彼此的门牌号。
步骤1:基础生命体征检查
docker ps -a --filter name=web
docker ps -a --filter name=db
# 查看容器的IP地址分配(获取住址信息)
docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' web
docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' db
步骤2:建立诊断隔离区
# 创建专用检查环境(设立独立诊疗室)
docker network create clinic_network --subnet=10.100.0.0/24
# 部署标准测试容器(携带标准检测工具的患者)
docker run -d --name network_tester --net clinic_network alpine sleep 3600
典型治疗案例
当发现web容器位于默认bridge网络而db在自定义网络时:
# 连接错误网络的解决方案(给患者转科室)
docker network connect clinic_network web
# 验证联通性(检测神经系统反射)
docker exec -it web ping db
第三章 疑难杂症:端口映射的量子纠缠
问题复现
用户访问宿主机的8080端口就像对着黑洞喊话——永远得不到回应。宿主机的端口映射明明存在,但流量却消失在虚空中。
深度检查清单:
# 扫描宿主机的TCP监听状态(检查听觉神经)
sudo ss -tulpn | grep 8080
# 追踪防火墙规则路径(检查神经传导通路)
sudo iptables -t nat -L DOCKER -v --line-numbers
标本兼治方案
当发现DOCKER链规则顺序错误时:
# 修正iptables规则顺序(修复神经信号路由)
sudo iptables -t nat -D DOCKER 2
sudo iptables -t nat -I DOCKER 2 -p tcp --dport 8080 -j DNAT --to-destination 172.17.0.2:80
第四章 DNS的迷宫冒险
症状特征
容器里的域名解析时灵时不灵,就像得了间歇性失忆症。特别在连接公司内部域名时,解析成功率堪比抛硬币。
病理分析:
# 检查DNS配置文件(查看记忆中枢)
docker exec -it web cat /etc/resolv.conf
# 执行DNS解析测试(记忆能力测试)
docker exec web nslookup internal.company.com
治疗方案精选
当发现容器继承宿主机的DNS设置造成冲突时:
# 注射DNS配置修正剂(记忆强化训练)
docker run -d --name fixed_web \
--dns 192.168.1.100 \
--dns-search company.com \
nginx:alpine
第五章 预防性体检指南
- 网络架构疫苗:提前规划自定义网络结构,像布置医院科室一样划分功能区
- 端口映射体检表:建立部署检查清单,每个暴露端口都要经过"听诊器测试"
- DNS免疫方案:统一配置容器DNS策略,避免"记忆紊乱症"
第六章 专家会诊总结
在容器网络的世界里,每个故障都像是一道需要解码的谜题。通过系统性排查方法论:
- 网络连接问题:遵循"确认拓扑→测试联通→分析路由"的黄金三步法
- 端口映射异常:掌握"监听检查→规则验证→路径追踪"的组合拳
- DNS解析故障:实施"配置核对→解析测试→策略调整"的标准化流程
记得善用Docker自带的诊断工具包:
# 网络医师的听诊器套装
docker network inspect
docker port
docker exec ping/nslookup
评论