Docker无法连接服务:Sentry Onpremise Relay DNS解析失败求助
解决Sentry Onpremise Relay组件DNS解析失败的问题
首先,你的思路方向是对的——问题根源就是Docker容器继承了主机上那个无效的DNS服务器(web.router703710.com),导致Relay组件无法正常解析域名完成认证。下面给你几个可行的解决方案,按优先级排序:
1. 直接在Sentry Onpremise的Docker Compose配置中指定DNS
这是最针对性的方法,只修改Sentry相关容器的DNS设置,不影响其他Docker应用:
- 打开Sentry Onpremise目录下的
docker-compose.yml文件 - 找到
relay服务的配置块,添加dns字段,指定你的可用DNS服务器(比如你提到的192.168.1.1):
services: relay: # 其他现有配置保持不变 dns: - 192.168.1.1 # 可以再加备用DNS,比如公共的8.8.8.8 - 8.8.8.8
- 重启Relay容器:
docker-compose up -d relay
关于你提到的network_mode: host,这个方法虽然能让容器直接用主机的网络栈(包括主机的DNS),但如果主机本身的DNS配置里还是包含那个无效的Cisco域名,问题可能依然存在。而且用host网络会失去Docker容器网络的隔离性,除非必要,更推荐上面的dns字段配置。
2. 修改Docker Daemon全局DNS设置(全局生效)
如果希望所有Docker容器都默认使用可靠的DNS,可以修改Docker的全局配置:
- 编辑Docker daemon配置文件(Linux下通常是
/etc/docker/daemon.json,Windows/macOS可以在Docker Desktop设置里找到对应选项) - 添加或修改
dns字段:
{ "dns": ["192.168.1.1", "8.8.8.8"] }
- 重启Docker服务:
- Linux:
sudo systemctl restart docker - Docker Desktop:直接重启应用即可
- Linux:
- 然后重启Sentry容器:
docker-compose up -d
3. 验证DNS配置是否生效
修改后可以进入Relay容器验证DNS是否正常工作:
# 进入Relay容器 docker exec -it <relay_container_name> sh # 测试域名解析 nslookup getsentry.com
如果返回正确的IP地址,说明DNS配置已经生效。
另外,建议检查主机本身的DNS配置,确保主机也没有使用那个无效的web.router703710.com作为DNS服务器——可以通过cat /etc/resolv.conf(Linux)或系统网络设置(Windows/macOS)查看,避免后续其他应用也遇到类似问题。
内容的提问来源于stack exchange,提问作者eugene
相关产品推荐
相关产品推荐

