1. 问题概述
ubuntu系统的docker容器打包后在redhat中使用,大模型api无法调用,报异常:
httpx2.ConnectError: Errno -3 Temporary failure in name resolution
2.问题分析
Docker 容器的 DNS 配置与宿主机 Red Hat 环境脱节,导致容器内无法解析大模型 API 的域名。在宿主机上修复 DNS、确认ping通,并不代表容器内能正常解析。Ubuntu 容器(尤其是较新版本)的/etc/resolv.conf可能指向127.0.0.53,这是宿主机systemd-resolved的本地存根地址,在容器的独立网络命名空间里没有服务监听,因此解析必然失败。
3.解决方案
3.1 修改宿主机docker配置
在宿主机上配置全局 DNS,给文件/etc/docker/daemon.json写入内容(注意是合并,不要删除原有的内容)
bash
{
"dns": ["223.5.5.5", "8.8.8.8"]
}
其中223.5.5.5是阿里云 DNS,在国内通常更稳定;8.8.8.8作为备选。
3.2 重启容器服务
bash
sudo systemctl restart docker