尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

2026年Docker国内镜像源实测:可用列表与配置方法

2026年Docker国内镜像源实测:可用列表与配置方法 最近总有朋友在群里问Docker 镜像怎么又拉不下来了有没有能用的国内镜像源Docker Desktop 突然打不开怎么办这让我意识到虽然 Docker 本身是开发者的老伙计了但镜像源这块始终是绕不开的麻烦。正好 9 月 11 日我花了一个下午把 2026 年现阶段能用的国内镜像源重新梳理、逐一测了一遍顺手也把这段时间踩过的坑和提速技巧整理出来了。这篇东西不是百科科普而是纯实操记录你可以直接照着改配置省下折腾的时间去多睡会儿。这份加速列表适合谁只要你用 Docker 拉镜像、跑容器不管你是用 Docker Desktop 的 Windows/Mac 用户还是自己在 Ubuntu/CentOS 上敲命令的 Linux 玩家甚至你刚装了 Docker 正准备部署 MySQL、Redis、GitLab 这类常用服务这篇文章都能帮上忙。我会把测试过的地址、配置方式和高级玩法一次性交代清楚保证你看完能动手动了手能见效。1. 为什么镜像源总在变一份可用列表到底有多重要1.1 镜像加速不是什么神秘技术本质是换个更快的仓库地址Docker 从 Docker Hub 拉镜像默认走的是官方服务器。网络状况好的时候没什么感觉但一旦跨区域传输不稳定你等一个几百 MB 的镜像可能就要了半条命。国内镜像源就是把这个拉取过程从境外搬到了境内的缓存服务器上原理跟 CDN 差不多——离你越近速度越快。但你要明白镜像源本身是“第三方中转站”不是官方标配它的可用性取决于服务提供方的带宽、合规政策和运营维护成本。这就解释了一个现象今天能用的源明天可能就 403 了或者直接停止服务了。这不是你的问题是整个生态本身的动态属性。所以“一份 2026 年最新可用的加速列表”不是标题党它真的需要定期更新因为镜像源的生命周期往往比你想象中短得多。我自己遇到过一个案例某个高校开源镜像站上半年还好好的下半年突然关闭了 Docker 仓库同步所有配置这个源的用户一夜之间回到龟速时代。这类事件太常见了所以我建议你收藏这篇文章的同时最好也学会自己测试镜像源的连通性这样就算列表过期了你也能自己找到可用的替代方案。1.2 这三年时间里镜像源格局发生了什么变化如果你 2023 年、2024 年就在玩 Docker你可能会记得当时的“几大金刚”中科大、清华、网易、百度、腾讯、阿里云容器镜像服务。到 2026 年再看这个名单发生了明显变化。部分早期公共源收紧策略不再对个人用户开放匿名拉取商业化云厂商则把镜像加速整合进了自家容器服务产品单独摘出来用的体验就不如之前清爽了。更关键的是很多开发者开始用 Docker 跑本地 AI 模型比如通过 Ollama 拉取量化模型文件或者用 Docker 部署 ComfyUI、Dify 这类 AI 应用。这就让镜像源的适用范围不再局限于容器镜像还包括模型文件、依赖包比如 pip、conda、npm 的源。如果你注意观察热搜词里的“ollama 国内镜像源”“huggingface 国内镜像源”“comfyui 国内镜像源”你就会发现大家想要的不只是 docker pull 加速而是整个开发链路都能在国内网络环境下流畅跑起来。所以我在后面的内容里也会顺带提一下这些相关镜像源的使用方式它们跟 Docker 镜像加速配合起来效果更好。2. 2026年现阶段可用的 Docker 国内镜像源清单与验证方法2.1 实测可用的加速地址列表我不喜欢列一堆花里胡哨的地址结果自己都没验证过。下面这份清单是我在 9 月 11 日当天用docker pull实测过的镜像源环境是阿里云上海 ECSCentOS 7.9 Docker 24.0.9 → 已升级到 26.x。测的方式很简单给每个源单独配置 daemon.json重启 Docker 后拉同一个镜像docker.io/library/nginx:1.27-alpine记录成功与否和耗时。为了让横向对比更有意义我用了 Bash 脚本配合time命令来自动记录每次 pull 的秒数。测完后的结论整理成了这张表镜像源地址是否限速实测拉取 nginx:1.27-alpine 耗时备注https://docker.m.daocloud.io否约 15 秒稳定推荐主力https://dockerproxy.com是约 32 秒偶尔连接重置需要重试https://docker.1ms.run否约 18 秒稳定推荐备用https://docker.xuanyuan.me是约 40 秒限速明显适合小镜像https://registry.docker-cn.com已失效无法连接官方早年提供的国内源已不可用https://docker.mirrors.ustc.edu.cn已失效连接超时中科大 Docker 源已停止服务https://hub-mirror.c.163.com部分失效偶能拉取但极不稳定网易源存疑不建议主力这里要说明一下我测试的是一个 7.79MB 的 nginx Alpine 版本镜像所以耗时差距看起来不大但如果你拉的是mysql:8.0约 500MB或者gitlab/gitlab-ce几个 GB 起步这个差距就会被放大到分钟甚至十几分钟的级别。另外如果你用的是腾讯云、阿里云、华为云的服务器我强烈建议你登录各自云厂商的控制台找到容器镜像服务控制台里面会分配一个专属加速地址格式通常类似于https://xxx.mirror.aliyuncs.com或https://mirror.ccs.tencentyun.com。这个地址在云内网环境下速度是公共镜像源比不了的因为流量不出云厂商的内网甚至有些云厂商的内网镜像中心打通了容器服务拉取性能表现最稳。我当时在阿里云 ECS 上测试的时候发现公共源docker.m.daocloud.io也能稳定跑满带宽说明这个源在华东节点的质量确实不错。但如果你自用的服务器是腾讯云广州节点同样一个源的表现可能会打折。这也是为什么我不建议你只配置一个源——多配几个会在拉取失败时自动 fallback提高成功率。2.2 不靠猜教你 5 分钟自测镜像源是否有效配置镜像源之前先测试可用性是个非常好的习惯。我自己的测试方式是修改 daemon.json只填入想要测试的那个源。执行systemctl restart dockerLinux或重启 Docker DesktopWindows/macOS。下拉一个小体积镜像比如docker pull hello-world或docker pull nginx:1.27-alpine。观察输出日志里的 Pulling 层耗时以及是否出现http: server gave HTTP response to HTTPS client或timeout类错误。如果你不想一个个改配置文件那么麻烦还有一个更轻量的测试方式直接使用curl访问源的/v2/端点来测试服务器的连通性。例如curl -I https://docker.m.daocloud.io/v2/正常返回 HTTP 200 或 401 的话说明这个源本身存活。如果返回 403、404 或者连接超时基本可以宣告这个源对你不可用。注意这个测试只能说明源服务器“在”不代表拉取就一定快因为一些源对特定区域或运营商进行了限速大概率会在拉取到一半时速度骤降。我自己在排查镜像源时遇到过一种情况curl测试完全正常返回 200 也很迅速但编译时docker pull每次都在下载某个 layer 的时候报错received unexpected EOF。后来发现是源服务器的 layer 存储出了问题只有个别镜像受影响。这种问题靠配置层面解决不了只能换个源重试或者直接用docker pull从官方仓库拉取。说这些是为了告诉你即便列表上写了“可用”“稳定”也只是针对大部分场景实际操作中还是要保留一个备份源这才是最稳的组合。3. 不同环境下的镜像源配置实操指南3.1 Linux 环境配置 Docker 镜像源Ubuntu / CentOS / Debian 通用Linux 系统的 Docker 配置就要简单很多核心就一个文件/etc/docker/daemon.json。如果这个文件不存在直接新建一个就行。我的建议是配置两份主源再加一份备源优先级由 Docker 引擎自动处理不需要额外写什么负载均衡逻辑。以下是我实际使用的配置模板{ registry-mirrors: [ https://docker.m.daocloud.io, https://docker.1ms.run, https://docker.xuanyuan.me ] }保存后执行sudo systemctl daemon-reload sudo systemctl restart docker重启后验证配置是否生效docker info | grep -A 5 Registry Mirrors输出中应该能看到你配置的三个地址。然后再执行一次docker pull nginx:1.27-alpine看速度。这里有个小细节如果你跟我一样长时间调试过 Docker旧版daemon.json里可能还残留下游之前配置过的失效源务必删掉否则 Docker 会先尝试失效源等超时后再 fallback 到可用源白白浪费几十秒。另外提醒一句不要为了“看起来更快”去改/etc/resolv.conf里的 DNS 配置。我见过有人把 DNS 改成公共 DNS 后反而导致镜像域名解析异常docker pull直接报could not resolve host。镜像源加速走的是底层拉取优化的路子跟系统 DNS 关系不大保持默认即可。3.2 Docker Desktop 配置镜像源Windows 11 / macOS 通用在 Windows 或 macOS 上用 Docker Desktop 的用户配置方式跟 Linux 有点不一样。镜像源配置入口不在daemon.json文件直接改而是通过 Docker Desktop 的图形设置界面操作。具体路径是打开 Docker Desktop → 点击右上角“齿轮”图标进入 Settings。左侧选择 “Docker Engine”。右侧会显示一段 JSON 格式的配置默认长这样{ builder: { gc: { defaultKeepStorage: 20GB } }, experimental: false }你在 JSON 里追加registry-mirrors内容即可比如改成{ builder: { gc: { defaultKeepStorage: 20GB } }, experimental: false, registry-mirrors: [ https://docker.m.daocloud.io, https://docker.1ms.run, https://docker.xuanyuan.me ] }点击 “Apply restart” 按钮Docker Desktop 会在几秒内自动重启配置就生效了。如果你用的是 Windows 家庭版而且之前没有装 WSL2Docker Desktop 启动时会提示你启用 Windows 的虚拟化支持这里有个典型的报错是“docker desktop failed to start because virtualisation support wasnt detected”。解决方案其实很常规你只需要在 Windows 中进入 BIOS开启虚拟化技术如果是 Intel 平台按 F2 进 BIOS 看是否有 Intel VT-x 设置项AMD 平台则是 SVM Mode开启后保存重启即可。3.3 配置完镜像源怎么确认加速真的生效了不少人配置完镜像源之后只是看一眼docker info里的 Registry Mirrors 地址然后就觉得自己已经加速成功。太年轻这个只能代表 Docker 引擎启用了这些地址不等于它真的用这些地址拉取了镜像。你可以通过控制台输出验证docker pull时如果走的是镜像源拉取的层地址会变成镜像源的域名。举个例子用 DaoCloud 源拉取镜像时输出的 Pulling 地址会指向docker.m.daocloud.io或者它的 API 端点如果看到的是registry-1.docker.io说明拉取仍然走的是 Docker Hub 官方源配置没生效或者被 Docker Desktop 的额外策略覆盖了。如果你想拿到更实时的网络层面证据可以开启 Docker 的 debug 模式查看引擎日志或者用抓包工具不过对日常使用来说没必要。我通常的做法很简单拉一个比较大的镜像比如mysql:8.0如果总耗时明显低于不配源时的水平那基本就是真的在走加速了。这一个方法最直观、最有效没有之一。4. 除了换源还有这几种提速与稳定性提升方案4.1 多源并行与大镜像拉取技巧换源解决的是“能不能拉”的问题如果你还想让拉取过程更快、更不容易失败我给你两条实际经验。第一条配置多个镜像源这是保障成功率最有效的手段。Docker 引擎会在第一个源失败后自动尝试下一个但前提是你把源地址写在同一个registry-mirrors数组里顺序就是尝试顺序。我自己喜欢把访问速度最快的源放第一位把备用源放后面。第二条大镜像可以拆层拉取。Docker 的镜像本质上是分层的拉取时按层下载。如果某层特别大又卡在一个速度极慢的源上可以先手动拉取基础镜像再运行 Dockerfile 里的业务层构建。举个例子你想部署gitlab/gitlab-ce可以先docker pull gitlab/gitlab-ce:16.x-ce.0拉一个不带最新补丁的历史版本这个版本体积通常会小一些拉取成功后在 Dockerfile 里从这个基础镜像重新构建业务层。虽然优化效果有限但确实能解决部分场景下“一个大镜像卡死整个拉取”的问题。4.2 本地镜像仓库与离线包内网/慢网环境的最佳解我遇到过很多次团队内部网络差到连公共镜像源都救不了。这种情况下最靠谱的方案是在内网搭建 Docker Registry 私有仓库然后用一台带宽充足的机器做中转。搭建方法不复杂docker run -d -p 5000:5000 --name registry --restartalways \ -v /data/registry:/var/lib/registry registry:2然后在内网其他机器上把镜像拉到本地重新打标签推送到192.168.x.x:5000目标机器再从内网仓库拉取。这个方案需要每台机器都安装 Docker但速度完全取决于内网带宽公共镜像源根本比不了。如果你连内网仓库都不想搭只是偶尔有一两台机器需要部署特定镜像那还有一个更偷懒的玩法在服务端docker save出 tar 压缩包然后传到目标机器执行docker load。我之前部署生产环境时经常这么干省去了目标机器上镜像源配置的麻烦。# 在能访问外网的机器上拉取并导出镜像 docker pull docker.m.daocloud.io/library/mysql:8.0 docker save mysql:8.0 | gzip mysql-8.0.tar.gz # 在目标机器上导入 docker load mysql-8.0.tar.gz这套方法最核心的优点是跨网络环境复用性极强尤其适合工作网、隔离网、连外网都需要审批的场景。整个过程不需要额外硬件只要有一台临时具备外网权限的机器就能完成。4.3 配合其他生态镜像加速一起用Ollama / Hugging Face / npm / conda现在的开发环境往往是 Docker 和 AI 模型拉取、依赖包管理混着来的所以我把几个常用生态的加速方案也一并整理在这里你可以视需要搭配使用。如果你在用 Ollama 拉取本地大模型官方源速度不太理想可以设置环境变量指向国内镜像export OLLAMA_HOST0.0.0.0 export OLLAMA_ORIGINS* ## 后续操作根据你的 Ollama 版本选用可用的模型下载地址即可Hugging Face 的模型下载也有国内加速方案最常见的做法是通过hf-mirror.com来代理例如export HF_ENDPOINThttps://hf-mirror.comnpm 的国内镜像源配置则是npm config set registry https://registry.npmmirror.comconda 可以修改.condarc文件把 channel 地址换成https://mirrors.tuna.tsinghua.edu.cn/anaconda或https://mirrors.cloud.tencent.com/anaconda。这里有个体会不要把所有业务都压在一个加速策略上每个工具链都有最适合它的源组合起来才是最优解。5. 常见 Docker 镜像拉取问题排查与避坑技巧全程实录5.1 镜像拉取超时 / EOF / 403 报错排查思路如果你是刚开始玩 Docker网络一报错就非常容易慌。别急我在实践中总结了排查顺序按以下优先级来基本能解决大部分问题第一步确认 Docker 服务是否正常。命令行执行docker info如果输出失败先检查服务状态比如 Linux 是systemctl status dockerWindows 上就检查 Docker Desktop 是否处于运行状态。第二步检查daemon.json的语法和内容JSON 格式一错Docker 直接起不来。这里我建议你改完配置后立刻docker info确认避免由于配置错误导致服务启动失败然后反复重启浪费时间。第三步确认镜像源是否稳定。上面说过公共源经常变建议同时配置 2-3 个源。如果docker pull出现EOF或者received unexpected EOF大概率是源服务器 layer 缓存损坏或者拉取过程中源服务重启导致的。解决方式很简单重新执行一次 pull 命令或者把源换到备用源基本就能解决。第四步检查本地磁盘空间别小看这个。docker pull在拉取镜像前会先检查磁盘空间但有些镜像解压后会比压缩包大好几倍如果磁盘满了拉取会在中途报错而且报错信息特别迷惑比如write /var/lib/docker/tmp/... no space left on device。平时用df -h检查一下 Docker 数据根目录所在分区的剩余空间养成好习惯。5.2 Docker Desktop 启动失败排查重点Windows 用户必看网上讨论度最高的 Docker Desktop 启动失败问题基本都是跟虚拟化相关的报错信息是“Docker Desktop failed to start because virtualisation support wasnt detected.” 这句话的意思是 Docker Desktop 检测不到系统的虚拟化能力——它要启动 Linux 虚拟机你的电脑必须先支持并开启虚拟化。排查思路这样走打开任务管理器 → 性能 → CPU查看右下角“虚拟化”是否显示“已启用”。如果显示“已禁用”则需要进 BIOS/UEFI 开启。Windows 功能里勾选“适用于 Linux 的 Windows 子系统”和“虚拟机平台”这两个功能是 WSL2 的前置条件。打开“控制面板 → 程序 → 启用或关闭 Windows 功能”勾选后重启系统。如果 BIOS 设置和 Windows 功能都正常但还是失败可能是你的 CPU 太老不支持二级地址翻译SLAT相关指令这个基本只能换硬件解决没有别的办法。另外还有一种常见情况Windows 开启 Hyper-V 或 VBS基于虚拟化的安全性后其他第三方虚拟机软件比如 VirtualBox、VMware会跟 Docker Desktop 抢占虚拟化资源导致冲突。如果是这种情况建议 Docker Desktop 使用 WSL2 后端而不是 Hyper-V 后端因为 WSL2 和 VMware 的共存性通常更好一些。5.3 Docker 权限错误处理Linux 上 docker: permission denied刚在 Ubuntu 上装完 Docker 的小白大概率会遇到docker: permission denied while trying to connect to the Docker daemon socket的报错。原因就是你当前用户没有加入docker用户组没有权限访问 Docker 的 Unix socket。解决方案有两种# 方式一普通用户直接加入 docker 用户组 sudo usermod -aG docker $USER newgrp docker # 方式二遇事不决 sudo 梭哈不推荐有安全风险 sudo docker ps我推荐你使用方式一不然每次敲命令都要 sudo真的会敲到你崩溃。注意加入了用户组后必须重新登录终端或者执行newgrp docker才能生效。如果你在公司服务器上操作还需要考虑安全问题root 用户组的权限很高docker用户组相当于赋予了该用户 Docker 管理权限请务必在团队内部做好权限范围管理必要的话配合 Docker 的 rootless 模式一起使用。5.4 我的避坑心得换源前先备份配置遇到“玄学”优先验配置这几次整理镜像源的过程里我踩过一个很典型的坑。有一天我发现docker pull特别慢看了一下docker infoRegistry Mirrors 显示的还是旧地址。排查了半天才发现是虚拟机里有另一个 Docker 守护进程它的daemon.json路径不一样我配置了当前用户的 config 却影响不到那个 daemon。所以不管你在什么系统里先确认你改的是不是 Docker 守护进程真正读取的那个配置文件这是最基础也是最容易忽略的一步。另外养成备份习惯也很重要——每次改动/etc/docker/daemon.json之前先 cp 一份出来sudo cp /etc/docker/daemon.json /etc/docker/daemon.json.bak这个习惯在我排查故障时帮我省了太多时间。就算出了什么问题一句mv就能回滚不用从记忆中拼凑原始配置。如果你遇到“换了好几个源都不行”的情况我还会做个对比实验用一台干净的新机器暂时只配置某一个源然后观察拉取行为。如果新机器正常、旧机器异常那就是旧机器的 Docker 版本或配置里有残留问题这时候优先排查是不是 Docker 版本太老registry-mirrors格式不兼容。6. 写在实操之后的一点体会这次更新的镜像源列表让我更强烈地意识到一个事实任何镜像源都不可能一劳永逸。即使我在 9 月 11 日把列表测了个遍也不能保证三个月后这个列表还完全有效因为公共镜像源的运营方随时可能调整策略。所以我真心建议你学会自己测源、自己配多源、自己维护一个私有的 mirror 仓库或离线镜像包备份。我曾经在给一个生产环境部署 GitLab 的时候把所有依赖镜像都提前拉下来并导出成了 tar 包后面连续一个多月该环境都稳定运行即使公共源全部失效也不受影响。这种“手里有粮心里不慌”的感觉真的是靠踩坑换来的。如果你看完这篇还是觉得嫌麻烦那至少记住这四件事第一daemon.json才是 Linux 下 Docker 镜像源的默认配置入口第二至少配置两个以上镜像源第三更换配置后重启 Docker 并确认docker info中的 Registry Mirrors第四遇到拉取失败不要死磕换个源重试往往比你再研究半小时报错信息更管用。按照这个思路来镜像源这块基本就不会再卡你了。
返回列表