Docker容器无法通过名称解析同网络容器问题排查求助
Docker Compose容器名称DNS解析故障排查思路(Windows环境)
基础网络配置检查
- 执行
docker inspect <容器名称>,查看NetworkSettings.Networks字段,确认需要互通的容器都处于同一个Docker Compose自定义网络中(默认bridge网络不支持容器名解析,Compose默认会为每个项目创建专属自定义网络) - 用
docker network ls列出所有网络,找到对应项目的Compose网络,再执行docker network inspect <网络名称>,确认所有相关容器都已正确加入该网络
容器内部DNS验证
- 进入目标容器执行
nslookup <待解析容器名称>或ping <待解析容器名称>,观察是否能正常解析到容器IP - 检查容器内DNS配置:Linux容器查看
/etc/resolv.conf,确认DNS服务器指向Docker内置DNS(通常为127.0.0.11);Windows容器可通过ipconfig /all查看DNS服务器设置是否正确
Compose配置文件校验
- 检查
docker-compose.yml,确保没有为容器指定network_mode: host或network_mode: none,这类设置会让容器脱离Compose自定义网络,导致容器名解析失效 - 确认所有需要互通的服务在
networks段中都声明加入了同一个网络(若手动配置了多网络,需保证一致性)
重置Docker网络环境
- 执行
docker network prune清理所有未被容器使用的网络(注意:会删除闲置网络,操作前确认不影响其他运行项目) - 重启Docker服务后,重新启动项目:
docker-compose down && docker-compose up -d
Windows主机环境排查
- 检查Windows主机的DNS设置,确认未被修改为异常地址,避免干扰Docker内部DNS转发
- 临时关闭主机防火墙或安全软件,测试是否是防火墙规则拦截了Docker内部的DNS请求
版本兼容性测试
- 当前使用的Docker 4.14.1与Compose 2.3可能存在版本兼容问题,可尝试降级到之前正常工作的Docker版本,或升级Compose至较新稳定版(如2.20+)后重新测试
内容的提问来源于stack exchange,提问作者mp1990
相关产品推荐
相关产品推荐

