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

M1 Mac使用docker buildx构建amd64镜像时出现代理超时问题

M1 Mac构建amd64镜像代理超时问题排查与解决

问题描述

在M1 Mac上构建linux/amd64镜像,重启后相关命令可正常运行约一天,之后开始出现代理超时错误。

相关配置与命令

  • Dockerfile起始内容:
FROM python:3.10.10-slim as build
  • 执行的构建命令:
docker buildx build 
  --build-arg http_proxy=http://myproxy:8080 
  --build-arg https_proxy=http://myproxy:8080 
  --build-arg HTTP_PROXY=http://myproxy.edu:8080 
  --build-arg HTTPS_PROXY=http://myproxy:8080 
  --load --platform linux/amd64 .
  • 构建前创建buildx builder的命令:
docker buildx create --use --name mybuilder 
  --driver=docker-container 
  --driver-opt env.http_proxy=http://myproxy:8080 
  --driver-opt env.https_proxy=http://myproxy:8080 
  --driver-opt '"env.no_proxy='$no_proxy'"'

报错信息

1 | >>> FROM python:3.10.10-slim as build
  2 |     
--------------------
ERROR: failed to solve: DeadlineExceeded: DeadlineExceeded: DeadlineExceeded: python:3.10.10-slim: failed to do request: Head "https://registry-1.docker.io/v2/library/python/manifests/3.10.10-slim": proxyconnect tcp: dial tcp myproxy:8080: i/o timeout

排查与解决步骤

  • 检查代理服务可用性
    直接在终端测试代理连通性:curl -x http://myproxy:8080 https://registry-1.docker.io,如果出现超时,说明代理服务本身故障,联系运维排查或重启代理。

  • 重置buildx builder容器
    buildx的docker-container驱动会创建后台运行的容器,长期运行后可能出现网络连接异常,重置步骤:

    1. 删除现有builder:docker buildx rm mybuilder
    2. 重新创建builder(修正原命令中no_proxy的引号格式问题):
      docker buildx create --use --name mybuilder \
        --driver=docker-container \
        --driver-opt env.http_proxy=http://myproxy:8080 \
        --driver-opt env.https_proxy=http://myproxy:8080 \
        --driver-opt "env.no_proxy=$no_proxy"
      
    3. 清除buildx缓存:docker buildx prune -f
  • 统一代理参数
    构建命令中HTTP_PROXY使用了myproxy.edu,其余代理参数用的是myproxy,可能导致代理配置冲突,统一为同一地址后重试:

    docker buildx build \
      --build-arg http_proxy=http://myproxy:8080 \
      --build-arg https_proxy=http://myproxy:8080 \
      --build-arg HTTP_PROXY=http://myproxy:8080 \
      --build-arg HTTPS_PROXY=http://myproxy:8080 \
      --load --platform linux/amd64 .
    
  • 配置Docker全局代理
    避免每次构建都手动传递代理参数,在Docker Desktop中设置全局代理:

    1. 打开Docker Desktop偏好设置 -> Resources -> Proxies
    2. 手动填写HTTP、HTTPS代理地址,添加no_proxy列表
    3. 应用设置后重启Docker

内容的提问来源于stack exchange,提问作者eaubin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 19:25:14