You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 07:20:48