Docker构建加载.NET镜像失败:新Ubuntu机器连接超时问题
解决Docker构建时dotnet restore超时问题
针对新Ubuntu机器上Docker构建报错net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers),可以试试以下排查和解决方法:
先检查主机网络连通性
在新Ubuntu机器上直接执行curl <url>或ping <url>,确认私有源地址能正常访问。如果是公司内网源,检查新机器是否在授权网段内,有没有被防火墙、网关拦截,是否需要配置内网代理。构建时传递代理参数
如果新机器必须通过代理访问该源,构建镜像时带上代理环境变量:docker build --build-arg HTTP_PROXY=http://你的代理地址:端口 --build-arg HTTPS_PROXY=http://你的代理地址:端口 .也可以在Dockerfile里临时注入代理配置(别硬写敏感信息):
FROM microsoft/aspnetcore-build:2.0 ARG HTTP_PROXY ARG HTTPS_PROXY ENV HTTP_PROXY=$HTTP_PROXY ENV HTTPS_PROXY=$HTTPS_PROXY RUN dotnet restore -s <url> <project path> RUN dotnet publish <project path> -c Release -o <path>延长restore超时时间
给dotnet restore添加--timeout参数,比如设置10分钟超时(单位为秒):RUN dotnet restore -s <url> <project path> --timeout 600检查Docker的DNS配置
新机器的Docker daemon可能存在DNS解析问题,导致容器内无法识别源地址。修改/etc/docker/daemon.json添加公共DNS:{ "dns": ["8.8.8.8", "114.114.114.114"] }修改完成后重启Docker服务:
sudo systemctl restart docker替换基础镜像
microsoft/aspnetcore-build:2.0是较旧的镜像,可能存在旧版SDK的网络兼容性问题,换成官方维护的镜像试试:FROM mcr.microsoft.com/dotnet/core/sdk:2.0 RUN dotnet restore -s <url> <project path> RUN dotnet publish <project path> -c Release -o <path>
内容的提问来源于stack exchange,提问作者Anil
相关产品推荐
相关产品推荐

