阿里云内网 Docker CE 镜像元数据不一致,导致 apt update 失败

尊敬的技术支持,您好:

问题: 阿里云内网镜像 mirrors.cloud.aliyuncs.com/docker-ce/linux/ubuntu 的 jammy/stable/binary-amd64/Packages.bz2 与 Release 元数据不一致,导致 apt update 持续报错。

环境:

系统:Ubuntu 22.04 LTS (jammy) amd64

复现步骤与证据:

只更新基础 Ubuntu 源(正常):

sudo apt-get update -o Dir::Etc::sourcelist="sources.list" -o Dir::Etc::sourceparts="-" -o APT::Get::List-Cleanup="0"

输出:全部 Hit,成功。

只更新 docker-ce 源(报错):

sudo apt-get update -o Dir::Etc::sourcelist="/etc/apt/sources.list.d/docker.list" -o Dir::Etc::sourceparts="-" -o APT::Get::List-Cleanup="0"

输出:

Get:2 http://mirrors.cloud.aliyuncs.com/docker-ce/linux/ubuntu jammy/stable amd64 Packages [87.5 kB]
Err:2 ... File has unexpected size (86998 != 87455). Mirror sync in progress? [IP: 100.100.2.148 80]
Hashes of expected file:
 - Filesize:87455 [weak]
 - SHA256:5b114e9b6ab8ecb51eb75360b6f9c3eceecb5a3582e220b743e179d6849e6aac
 ...
Release file created at: Tue, 15 Sep 2026 16:47:43 +0000

影响: 无法通过 apt 安装/更新 Docker,依赖 Docker 的软件(如 1Panel)安装失败。

诉求:

请检查并修复 mirrors.cloud.aliyuncs.com/docker-ce/linux/ubuntu 的同步状态;

确认 dists/jammy/stable/binary-amd64/Packages.bz2 与 Release 文件的大小/哈希一致性;

展开
收起
1040532928489137 2026-09-16 10:53:53 425 分享 版权
2 条回答
写回答
取消 提交回答
  • 这个报错通常是镜像站的索引和实际包不一致,或者本机 apt 缓存还拿着旧索引。可以按下面顺序排:

    1. 先清缓存,排除旧索引:
    sudo apt-get clean
    sudo rm -rf /var/lib/apt/lists/*
    sudo apt-get update -o Acquire::Retries=3
    
    1. 检查 Docker 源是否写对。Ubuntu 24.04 的推荐写法:
    sudo install -m 0755 -d /etc/apt/keyrings
    curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg \
      | sudo gpg --dearmor -o /etc/apt/keyrings/docker.asc
    sudo chmod a+r /etc/apt/keyrings/docker.asc
    
    echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] \
    https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(. /etc/os-release && echo $VERSION_CODENAME) stable" \
      | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
    
    1. 如果仍然报 Hash Sum mismatch,说明镜像站这一份元数据确实有问题,临时换官方源验证:
    sudo sed -i 's#mirrors.aliyun.com/docker-ce#download.docker.com#' /etc/apt/sources.list.d/docker.list
    sudo apt-get update
    

    官方源能过、阿里云源不能过,就可以确定是镜像同步问题,过一段时间再切回来,或者提工单让镜像团队刷新。

    1. 还有一种容易忽略的情况:ECS 走了内网代理或自定义 DNS,导致拿到的 Packages 和 InRelease 不是同一版本。可以打开调试确认实际请求地址:
    sudo apt-get -o Debug::Acquire::http=true update 2>&1 | grep -E "GET|Hash"
    
    1. 最后确认架构一致,不要混用 amd64 和 arm64 的源;dpkg --print-architecture 的输出要和 docker.list 里的 arch= 对得上。

    按经验,第 1 步加第 2 步能解决大部分情况;如果第 3 步验证出是镜像站单边问题,就不要反复重装 Docker,等镜像同步或临时用官方源即可。

    2026-10-24 20:02:15
    赞同 7 展开评论
  • 您好,这是典型的镜像同步延迟或缓存不一致问题。由于阿里云内网镜像存在多级缓存和异步同步机制,当上游 Docker Hub 更新元数据时,局部节点可能出现 Packages.bz2 与 Release 文件时间戳或大小不同步的情况。

    建议临时解决方案:

    1. 等待同步完成:通常该问题在 5-15 分钟内自动修复,请稍后重试。
    2. 切换备用源:若急需安装,可暂时替换为公网官方源(注意网络策略允许):
      sudo rm /etc/apt/sources.list.d/docker.list
      curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
      echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
      sudo apt-get update
      
    3. 清理本地缓存:执行 sudo apt-get clean 并删除 /var/lib/apt/lists/*docker* 相关文件后重试。

    如问题持续超过 30 分钟,请通过阿里云工单系统提交此现象,并提供具体报错时间戳及 IP(100.100.2.148),以便我们核查特定节点状态。

    官方详细解决方案:https://help.aliyun.com/zh/pts/performance-test-pts-2-0/user-guide/stress-tests-in-alibaba-cloud-vpcs

    2026-09-16 11:18:05
    赞同 121 展开评论

云服务器ECS是一种安全可靠、弹性可伸缩的IaaS级云计算服务。在这里你可以获取最新的ECS产品资讯、最前沿的技术交流以及优惠活动等信息,加速自己的技术成长。

收录在圈子:
+ 订阅
还有其他疑问?
咨询AI助理