Rootless Docker构建cryptography依赖时报github.com地址解析错误
问题原因
Rootless Docker默认使用slirp4netns用户态网络栈,与root模式的内核态bridge网络栈实现逻辑不同,容易出现DNS解析异常,你遇到的github.com域名解析失败就是该问题导致的。
解决方案
按实施优先级排序:
方案1:跳过Rust编译(最快适配)
在Dockerfile的ENV配置段新增环境变量CRYPTOGRAPHY_DONT_BUILD_RUST=1即可,无需修改其他配置,修改后的ENV段如下:ENV LANG C.UTF-8 ENV CRYPTOGRAPHY_DONT_BUILD_RUST=1方案2:手动指定构建用DNS服务器
执行构建命令时追加DNS参数,使用公共DNS服务器解析域名:docker build --dns 8.8.8.8 --dns 114.114.114.114 .方案3:配置cargo使用系统git拉取依赖
在Dockerfile安装rust、cargo的RUN语句后,新增cargo配置:RUN mkdir -p /root/.cargo \ && echo "[net]" >> /root/.cargo/config \ && echo "git-fetch-with-cli = true" >> /root/.cargo/config该配置可规避cargo内置git实现的网络兼容性问题。
方案4:修复Rootless Docker基础网络配置
- 更新系统的slirp4netns软件包到最新版本
- 检查宿主机DNS配置文件的读取权限,确保当前运行Rootless Docker的普通用户可读取/etc/resolv.conf对应文件
内容的提问来源于stack exchange,提问作者Supremus
相关产品推荐
相关产品推荐

