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

Mac环境构建Ubuntu Docker镜像时apt-get update连接失败

Mac环境Docker容器执行apt-get update连接失败排查方案

核心判定:手动启动交互式容器执行命令复现故障、切换WiFi后操作正常,可直接排除Dockerfile语法错误、shell脚本权限问题、基础镜像损坏等原因,故障根因在当前WiFi网络环境与Docker容器网络的连通性层面。
注意:Mac平台的Docker Desktop基于虚拟化实现,--network=host参数仅让容器共享Docker内置Linux虚拟机的网络栈,无法直接共享Mac宿主机网络,因此之前添加该参数测试无效属于预期表现。

排查步骤

  • 先验证宿主机到Ubuntu官方源的连通性:在Mac本地终端执行curl -v http://security.ubuntu.com,如果宿主机都无法建立连接,说明当前WiFi直接拦截了Ubuntu官方源80端口的出站访问,企业内网、公共WiFi常存在这类出口访问规则限制。
  • 如果宿主机可以正常连通,执行docker run --rm alpine ping -c 3 185.125.190.39测试容器到源IP的连通性,如果ping不通,说明Docker Desktop虚拟网络在当前网络环境下路由异常。
  • 检查Mac本地是否开启全局代理/VPN:Docker默认不会自动继承宿主机的代理配置,容器流量直接出网时就会被当前WiFi的访问规则拦截。

可行解决方法

  • 方法1:替换Ubuntu软件源为国内镜像,绕开官方源的连通限制。直接修改set_up.sh,在更新命令前添加源替换逻辑,修改后脚本内容如下:
#!/bin/sh
# 替换软件源为国内镜像
sed -i 's@http://archive.ubuntu.com@http://mirrors.aliyun.com@g' /etc/apt/sources.list
sed -i 's@http://security.ubuntu.com@http://mirrors.aliyun.com@g' /etc/apt/sources.list
apt-get update
  • 方法2:重置Docker虚拟网络栈。打开Docker Desktop设置页,找到Resources -> Network选项,点击Reset network stack,重置完成后重启Docker再重新构建镜像。
  • 方法3:如果本地开了网络代理,在Docker Desktop设置的Resources -> Proxies页面,手动配置和宿主机一致的HTTP/HTTPS代理地址,保存后重启Docker,让容器流量走代理出网。
  • 方法4:临时连接手机热点测试构建,如果热点下构建正常,可确认是当前WiFi本身的访问限制,长期使用更换软件源即可解决。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 11:45:31