第一章 门诊接待:认识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

第五章 预防性体检指南

  1. 网络架构疫苗:提前规划自定义网络结构,像布置医院科室一样划分功能区
  2. 端口映射体检表:建立部署检查清单,每个暴露端口都要经过"听诊器测试"
  3. DNS免疫方案:统一配置容器DNS策略,避免"记忆紊乱症"

第六章 专家会诊总结

在容器网络的世界里,每个故障都像是一道需要解码的谜题。通过系统性排查方法论:

  1. 网络连接问题:遵循"确认拓扑→测试联通→分析路由"的黄金三步法
  2. 端口映射异常:掌握"监听检查→规则验证→路径追踪"的组合拳
  3. DNS解析故障:实施"配置核对→解析测试→策略调整"的标准化流程

记得善用Docker自带的诊断工具包:

# 网络医师的听诊器套装
docker network inspect
docker port 
docker exec ping/nslookup