场景
新装了一台机器(或重装系统),第一步永远是配国内源:pip、npm、go、docker 全要配,不然装什么都超时。但每篇教程各讲各的:有的让你改全局、有的让你改用户级、有的配完不知道有没有生效。你需要的是一份「一次配齐 + 每步可验证」的清单。
本组合包把四个包管理器的国内源配置命令 + 验证命令编排成套:pip → npm → Go → Docker,前三项纯用户级配置(无需 root、不重启任何服务),Docker 系统级放最后(可选)。它是配置方案不是插件——不新造工具,只是把官方支持的配置机制编排成套。
组合成员 (4)
pip(清华 PyPI 镜像)
下载:配置写入 `~/.config/pip/pip.conf`(用户级,无需 root;官方源地址 https://pypi.org/simple 为默认,不下载任何东西)
版本要求:pip >= 21(旧版 pip 对 index-url 支持一致,无硬性要求)
pip3 config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
pip3 config set global.trusted-host pypi.tuna.tsinghua.edu.cn
# 验证:读取当前生效配置
pip3 config list
npm(npmmirror 镜像)
下载:配置写入 `~/.npmrc`(用户级;官方源 https://registry.npmjs.org/ 为默认)
版本要求:npm >= 7(`npm config set` 行为一致,无硬性要求)
npm config set registry https://registry.npmmirror.com
# 验证:应输出 https://registry.npmmirror.com/
npm config get registry
Go(goproxy.cn)
下载:配置写入 `~/.config/go/env`(用户级,`go env -w` 官方机制;默认代理 https://proxy.golang.org 国内不可直连)
版本要求:Go >= 1.13(模块代理机制自 1.13 起为默认)
go env -w GOPROXY=https://goproxy.cn,direct
# 验证:应输出 https://goproxy.cn,direct
go env GOPROXY
Docker(daemon.json registry-mirrors)
下载:配置写入 `/etc/docker/daemon.json`(系统级,需 root;改动后重启 daemon,**影响运行中容器**,属可选步骤)
版本要求:Docker Engine >= 20.10(registry-mirrors 字段长期支持)
# 已有 daemon.json 时先备份再合并,不要覆盖原有配置
sudo cp /etc/docker/daemon.json /etc/docker/daemon.json.bak 2>/dev/null || true
sudo tee /etc/docker/daemon.json <<'EOF'
{
"registry-mirrors": ["https://docker.1ms.run", "https://docker.m.daocloud.io"]
}
EOF
sudo systemctl restart docker
# 验证:输出配置中的 mirror 地址
docker info | grep -A 2 "Registry Mirrors"
方案总览
| 配置项 | 管什么 | 写到哪里 |
|---|---|---|
| pip 清华源 | Python 包下载加速 | ~/.config/pip/pip.conf(用户级) |
| npm npmmirror | Node 包下载加速 | ~/.npmrc(用户级) |
| Go goproxy.cn | Go 模块代理 | ~/.config/go/env(用户级) |
| Docker 镜像加速 | 镜像拉取加速 | /etc/docker/daemon.json(系统级,需 root) |
顺序逻辑:前三项互不依赖,按「使用频率」配;每步配完立刻验证,失败只影响单步。Docker 放最后:系统级 + 重启 daemon 影响运行中容器,非必须(仅 Docker Hub 拉取失败时启用)。
快速开始
一键脚本由本文档自动生成(渲染后位于 pages/combos/combo-mirror-setup.sh),逐条执行:
bash pages/combos/combo-mirror-setup.sh
- 配完你会得到:pip/npm/go 三个用户级源生效 + Docker 镜像加速(可选)。
- 预计耗时:1-2 分钟。全部命令零外部下载(只写配置),配源本身不耗流量。
- 前置条件:pip/npm/go 已安装;Docker 步骤需 Docker Engine >= 20.10 + root。
想弄明白每一步在干什么、配错了怎么恢复 → 看「逐步教学」。一键脚本出问题 → 按逐步教学手动执行定位。
逐步教学
第 1 步:配 pip(清华 PyPI 镜像)
pip 的源配在用户级配置文件 ~/.config/pip/pip.conf,pip3 config set 是官方机制,无需 root、不影响系统。配完立刻 pip3 config list 读回验证。
pip3 config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
pip3 config set global.trusted-host pypi.tuna.tsinghua.edu.cn
# 验证:读取当前生效配置
pip3 config list
预期输出: config list 显示 global.index-url='https://pypi.tuna.tsinghua.edu.cn/simple'
装好确认:
pip3 config list读回 index-url;- 真实下载验证(可选):
pip3 download --no-deps -d /tmp/pip-test <小包名>速度快于官方源。
卡住怎么办:
- 改错配置想还原 →
pip3 config unset global.index-url或直接删~/.config/pip/pip.conf。
第 2 步:配 npm(npmmirror)
npm 的源配在 ~/.npmrc,npm config set 官方机制,用户级。配完立刻 npm config get registry 验证。
npm config set registry https://registry.npmmirror.com
# 验证:应输出 https://registry.npmmirror.com/
npm config get registry
预期输出: https://registry.npmmirror.com/
装好确认:
npm config get registry输出 npmmirror 地址;- 真实下载验证(可选):
npm view <小包名> version秒回。
卡住怎么办:
- 想还原官方源 →
npm config set registry https://registry.npmjs.org/。
第 3 步:配 Go(goproxy.cn)
Go 的模块代理用 go env -w 写入 ~/.config/go/env(官方机制,Go >= 1.13)。默认代理 proxy.golang.org 国内不可直连,配成 goproxy.cn 后 ,direct 后缀保留直连回退。
go env -w GOPROXY=https://goproxy.cn,direct
# 验证:应输出 https://goproxy.cn,direct
go env GOPROXY
预期输出: https://goproxy.cn,direct
装好确认:
go env GOPROXY输出 goproxy.cn 地址;- 真实下载验证(可选):在有 go.mod 的项目里
go mod download速度正常。
卡住怎么办:
- 想还原默认 →
go env -w GOPROXY=https://proxy.golang.org,direct或go env -u GOPROXY。
第 4 步:配 Docker(镜像加速,可选)
Docker 的 registry-mirrors 写在系统级 /etc/docker/daemon.json,需要 root,改完重启 daemon 会短暂影响运行中容器——所以放最后、非必须(Docker Hub 拉取失败才需要)。已有 daemon.json 时先备份再合并,不要覆盖原有配置。
# 已有 daemon.json 时先备份再合并,不要覆盖原有配置
sudo cp /etc/docker/daemon.json /etc/docker/daemon.json.bak 2>/dev/null || true
sudo tee /etc/docker/daemon.json <<'EOF'
{
"registry-mirrors": ["https://docker.1ms.run", "https://docker.m.daocloud.io"]
}
EOF
sudo systemctl restart docker
# 验证:输出配置中的 mirror 地址
docker info | grep -A 2 "Registry Mirrors"
预期输出: docker info 的 Registry Mirrors 段显示两个 mirror 地址
装好确认:
docker info | grep -A 2 "Registry Mirrors"显示 mirror;- 真实拉取验证(可选):
docker pull alpine:latest速度正常。
卡住怎么办:
- daemon 起不来(JSON 语法错)→ 用备份还原:
sudo cp /etc/docker/daemon.json.bak /etc/docker/daemon.json && sudo systemctl restart docker。 - 镜像加速失效(mirror 挂了)→ 换其它公共 mirror 地址,或临时移除 registry-mirrors。
note: Docker 步骤未实测(需 root + 重启 daemon,动用户环境,按红线不碰);配置片段与验证命令已给出,待有隔离 Docker 环境时补测。
装完验收(一步到位)
作用:配完跑下面一条命令块,全绿 = 本组合包就绪;某条失败 → 回「逐步教学」对应步骤定位。
pip config list | grep -i index-url
npm config get registry
go env GOPROXY
docker info | grep -A4 'Registry Mirrors'
预期输出: 清华 index-url;https://registry.npmmirror.com/;https://goproxy.cn,direct;Registry Mirrors 段显示镜像地址。四源全绿 = 镜像配齐
注:成员级配置命令均已实测;改 daemon.json 后需重启 Docker daemon 生效。
日常使用
启动与入口
- 无服务无进程:配置是静态的,包管理器每次下载自动走 mirror。
- 换网络环境(校园网/代理/流量)时 mirror 依然生效,无需重配。
常用操作
- 换源后第一次真实下载验证:
pip3 download/npm view/go mod download各来一个小的。 - 检查当前生效配置:
pip3 config list/npm config get registry/go env GOPROXY。 - Docker 拉取失败时:确认 daemon.json 配置 +
docker info的 Registry Mirrors 段。
数据与目录
- pip:
~/.config/pip/pip.conf;npm:~/.npmrc;Go:~/.config/go/env;Docker:/etc/docker/daemon.json(备份在同目录 .bak)。
卸载与清理
按配置项逐个还原官方源:
pip3 config unset global.index-url
npm config set registry https://registry.npmjs.org/
go env -u GOPROXY
# Docker:还原备份(若有)
sudo cp /etc/docker/daemon.json.bak /etc/docker/daemon.json && sudo systemctl restart docker
提示:前三项还原无副作用;Docker 还原同样会重启 daemon(影响运行中容器)。
安装顺序
- pip → npm → Go:三个用户级配置互不依赖,按「使用频率」顺序配;每步配完立刻验证(
config list/config get/go env),失败只影响单步。 - Docker 放最后:系统级 + 重启 daemon 影响运行中容器,非必须(仅 Docker Hub 拉取失败时启用;对应问题条目 docker-hub-pull-fail 即此场景)。
- 与代理共存:开着代理时 mirror 依然生效(包管理器直连 mirror 更快);校园网/流量环境下 mirror 是主通道,代理作为 mirror 失效时的备选——不要同时配「代理 + 指向被墙源的 mirror」。
依赖警告
- 冲突:四成员相互无共享写面(pip.conf / .npmrc / go env / daemon.json 互不重叠)→ compatible;与「已配置代理」场景:mirror 与代理可共存,但 npm/pip 若设了全局 proxy 会优先走代理,验证命令以实际下载测速为准(possible-compatible,构造性判定)。
- 版本:pip/npm/go/docker 均无硬性版本下限之外的要求;docker 步骤需要 Docker Engine 已安装。
- 环境:pip/npm/go 三项纯用户级(无需 root、不重启任何服务);docker 项需 root + daemon 重启(影响运行中容器,务必备份 daemon.json)。
- 国内网络:本组合包全部命令无外部下载(只写配置),配源本身零流量;验证建议用真实小下载(
pip3 download/npm view/go mod download)在 mirror 与官方源之间对比。
FAQ
- 配了 mirror 还用开代理吗? → mirror 是主通道(直连更快);代理作为 mirror 失效时的备选。不要同时配「代理 + 指向被墙源的 mirror」。
- Docker 步骤一定要配吗? → 非必须。只有 Docker Hub 拉取失败时才需要;它要 root + 重启 daemon(影响运行中容器),务必备份 daemon.json。
- 配错了怎么还原? → 每项都有还原命令(见「卸载与清理」),pip/npm/go 无副作用;Docker 用 .bak 备份还原。
- 配置写在哪里、重装系统会丢吗? → 都在用户目录(pip.conf/.npmrc/go env),重装系统会丢,需重配;Docker 在 /etc(系统级)。
验证证据
每份组合包在隔离环境实测(冒烟 + 写面检查),未实测项在文中如实标注;实测日期见下方验证证据。
验证于 2026-08-29 · TTL 到期 —(180 天)
本站实测记录(2026-08-29)
- pip:
HOME=/tmp/mirror-test1 pip3 config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple→ 写入/tmp/mirror-test1/.config/pip/pip.conf;config list读回global.index-url='https://pypi.tuna.tsinghua.edu.cn/simple'✓ - npm:
HOME=/tmp/mirror-test2 npm config set registry https://registry.npmmirror.com→npm config get registry输出https://registry.npmmirror.com/✓ - go:
HOME=/tmp/mirror-test3 go env -w GOPROXY=https://goproxy.cn,direct→go env GOPROXY输出https://goproxy.cn,direct✓ - docker:未实测——daemon.json 需 root + 重启 daemon,动用户环境,按红线不碰;配置片段与验证命令已给出,待有隔离 Docker 环境时补测