You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

macOS环境下Docker构建随机出现「Hash Sum mismatch」错误的排查求助

macOS环境下Docker构建随机出现「Hash Sum mismatch」错误的排查求助

大家好,我在M2芯片的Mac上构建Docker镜像时遇到了一个非常头疼的问题——每次执行到apt-get install步骤都会随机失败,要么报Hash Sum mismatch,要么说文件大小不符合预期,而且每次失败的具体包都不一样。同一个Dockerfile同事用着完全正常,CI/CD也能顺利跑通,就我本地各种踩坑,想请教下有没有遇到过类似情况的朋友,或者有什么新的排查方向可以试试?

相关Dockerfile片段

FROM node:22-slim
RUN corepack enable pnpm
RUN apt-get update && apt-get install -y \
  curl \
  python3 \
  python3-pip \
  build-essential \
  libcairo2-dev \
  libpango1.0-dev \
  libjpeg-dev \
  libgif-dev \
  librsvg2-dev \
  libpixman-1-dev \
  libffi-dev \
  libnss3 \
  libatk-bridge2.0-0 \
  libdrm2 \
  libgtk-3-0 \
  libgbm1 \
  && rm -rf /var/lib/apt/lists/*
WORKDIR /app

错误表现

每次构建失败的包都不固定,比如某次是libasan8的哈希校验失败,某次又是curl的文件大小异常,典型错误信息如下:

E: Failed to fetch http://deb.debian.org/debian/pool/main/g/gcc-14/libasan8_14.2.0-19_arm64.deb Hash Sum mismatch
E: Failed to fetch http://deb.debian.org/debian/pool/main/c/curl/curl_8.14.1-2_arm64.deb File has unexpected size (...)

我已经试过的排查方法

网络与镜像源相关

  • 换了N个Debian官方镜像源:deb.debian.orgftp.de.debian.orgftp.hu.debian.orgmirrors.kernel.orgcloudfront.debian.net,全没用
  • 给apt配置了重试参数Acquire::Retries,关闭了缓存,还分别单独测试了IPv4和IPv6
  • 切换过不同网络:家里WiFi、手机热点都试过,问题依旧
  • 开启了NordVPN,结果还是一样报错
  • 用同一个网络在Linux服务器上构建,完全没有问题
  • 尝试过HTTPS源,但必须先安装ca-certificates才能正常使用,这是目前唯一能成功的方法,但我不想修改Dockerfile

Docker环境相关

  • 删除了自定义DNS配置,完全重置了Docker Desktop
  • 试过三种Docker环境:Docker Desktop、Colima、Docker-in-Docker,全部中招
  • daemon.json里手动指定DNS为1.1.1.18.8.8.8,没有任何变化

主机层面检查

  • 确认容器的外部IP和主机一致(VPN也正常生效)
  • 关闭了系统防火墙和所有第三方网络过滤软件

目前唯一可行但不想用的方案

只有把Debian源切换为HTTPS能稳定构建成功,但需要在Dockerfile里先安装ca-certificates再替换源地址:

RUN apt-get update && apt-get install -y ca-certificates && \
  sed -i 's|http://deb.debian.org|https://deb.debian.org|g' /etc/apt/sources.list.d/debian.sources

但这个Dockerfile不是我完全负责维护的,不想随便修改内容。

我的环境信息

  • 主机系统:macOS Tahoe 26.x(Apple Silicon M2)
  • Docker工具:Docker Desktop 4.x(同时也测试了Colima)
  • 基础镜像:node:22-slim(Debian Bookworm/Trixie,同样的问题在python:3.13-slim镜像上也会出现)

疑问

现在我怀疑是Mac主机层面的HTTP流量被缓存或者篡改了?毕竟用HTTPS就完全没问题,可能和系统的透明HTTP缓存、Docker的网络代理、Mac的网络扩展或者DNS有关?有没有大佬能指点下下一步该排查什么?

火山引擎 最新活动