2026 年 10 月 Docker 国内镜像加速配置全指南:从 Docker 到 K8s 的完整方案

2026 年 10 月 Docker 国内镜像加速配置全指南:从云厂商内网源到轩辕镜像专业版,覆盖 Docker、containerd、Podman 的完整配置方案。

引言:docker pull 超时,问题可能不在源上

做渗透测试靶场复现、搭本地漏洞环境、部署自己的 Web 服务,都离不开 Docker。但不少朋友在 docker pull nginx:latest 时卡到怀疑人生——要么转圈几分钟后超时,要么直接报 401、429、manifest unknown。

遇到这种情况,先别急着换一堆来路不明的镜像源。很多时候不是源挂了,而是配置错了地方。比如 daemon.json 里的 registry-mirrors 只管 Docker Hub(docker.io);如果你的 Kubernetes 节点用的是 containerd,它根本不会读笔记本上 Docker Desktop 的加速配置。这篇文章基于 2026 年 10 月的最新情况,把从单机 Docker 到 K8s 集群的加速配置思路理一遍。

云厂商内网源:优先级最高,但别用错场景

如果你的机器跑在阿里云、腾讯云或华为云上,优先用各家内网镜像源,延迟最低也最稳定。

来源 地址 状态与适用范围
腾讯云 https://mirror.ccs.tencentyun.com 仅腾讯云 CVM 内网可用,不支持公网
阿里云 https://xxx.mirror.aliyuncs.com 仅阿里云 ECS,且已停止同步最新镜像,地址在控制台按账号获取
华为云 按 SWR 控制台文档配置 华为云环境内网可用
网易云 https://hub-mirror.c.163.com 已停用,建议立即从配置中删除

几个注意点:

  • 腾讯云内网源只支持云服务器内网访问,换到本机或别的云就无效。
  • 阿里云加速器地址是按账号生成的,非阿里云机器访问会返回 HTTP 403,而且它现在已经停止同步最新镜像。如果你发现拉下来的 latest 标签不是 Docker Hub 上的最新版,别把它当同步源继续用。
  • 网易云这类大厂公共加速早已停服,配置里还留着 hub-mirror.c.163.com 的,删掉,它只会拖慢你的拉取。

轩辕镜像:跨环境、多仓库的推荐方案

云厂商内网源基本只覆盖 Docker Hub,而且绑定了特定云环境。如果你要拉 ghcr.io、registry.k8s.io、gcr.io,或者需要在公司研发机、家里 NAS 上换着用,轩辕镜像专业版是个省事的选择。

注册后在个人中心能看到一个专属域名,形如 xxx.xuanyuan.run(前缀以页面显示为准),还有镜像账户和密码。它支持 Docker Hub、ghcr.io、GCR、registry.k8s.io,Linux、Docker Desktop、群晖、极空间、威联通都能配。流量在充值中心购买,新人使用 ¥2.9 起,50GB 是 ¥8。

如果只是临时体验,轩辕镜像也提供免费版:地址是 https://docker.xuanyuan.me(注意是 .me 不是 .run),不用登录,但只加速 Docker Hub,且限制每小时 100 次、每天 1,000 次请求。生产环境、CI、批量拉取千万别用免费地址——报 429 后可能要等约 6 小时才恢复。

一键安装脚本:Linux 上新装 Docker 的最快路径

如果你在一台干净的 Linux 机器上 (比如刚搭好的靶场主机) 需要装 Docker 和 Docker Compose,可以试试官方的一键脚本。测试环境一条命令就能搞定;生产环境建议先下载脚本看过再执行。

测试环境执行:

bash <(wget -qO- https://get.xuanyuan.cloud/docker.sh)

生产环境先下载再看再跑:

wget https://get.xuanyuan.cloud/docker.sh -O docker-install.sh
less docker-install.sh
bash docker-install.sh

这个脚本覆盖的发行版很广,包括 openEuler、OpenCloudOS、Anolis OS、Alinux、Kylin Linux、统信 UOS、深度 Deepin、Fedora、Rocky Linux、AlmaLinux、Ubuntu、Debian、CentOS(8+ / Stream)、RHEL、Oracle Linux。内置了阿里云、腾讯云、华为云、中科大、清华等国内软件源,老系统 (Ubuntu 16.04、Debian 9/10) 也有兼容分支,包管理器失败时还能回退到二进制安装。

注意:CentOS 7 已经 EOL,yum 源大量下线,这个脚本不支持 CentOS 7。还在用的话建议迁到 Rocky Linux、AlmaLinux 或 CentOS Stream 8+。

装完后验证一下:

docker --version
docker compose version

装好之后,把专业版专属域名写进 daemon.json 即可,这样少改一次配置。

手动配置镜像加速 (已安装 Docker 环境)

Linux 系统

先把专属域名准备好 (xxx.xuanyuan.run 换成你自己的前缀),然后写入配置:

sudo mkdir -p /etc/docker
cat <<EOF | sudo tee /etc/docker/daemon.json
{
  "registry-mirrors": ["https://xxx.xuanyuan.run"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

验证配置是否生效:

docker info | grep "Registry Mirrors" -A 3

输出里要有你的专属地址。然后拉一次镜像确认:

docker pull nginx:latest

macOS 和 Windows(Docker Desktop)

操作路径类似:菜单栏 Docker 图标 → Settings → Docker Engine,修改 JSON 后 Apply & Restart。

macOS / Windows 的 Docker Engine 配置写入:

{
  "registry-mirrors": ["https://xxx.xuanyuan.run"]
}

改完用 docker info 核对 Registry Mirrors 是否出现。注意生产环境不要用 insecure-registries 跳过 TLS 验证,证书问题要查专门的 TLS 说明。

K8s / containerd 节点配置

这是很多朋友容易踩坑的地方:Kubernetes 节点用的是 containerd,不会读 Docker 的 daemon.json,必须单独在 containerd 里配多仓库 mirrors,否则会出现 ImagePullBackOff。

先看版本:containerd --version,1.4 ~ 1.7.x 按下面步骤即可,≥ 1.7.x 推荐。如果还没有配置文件,先初始化:

containerd config default | sudo tee /etc/containerd/config.toml

然后编辑 /etc/containerd/config.toml,把 xxx 换成你的专属前缀,在 registry mirrors 下增加:

[plugins."io.containerd.grpc.v1.cri".registry]
  [plugins."io.containerd.grpc.v1.cri".registry.mirrors]
    [plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"]
      endpoint = ["https://xxx.xuanyuan.run"]
    [plugins."io.containerd.grpc.v1.cri".registry.mirrors."k8s.gcr.io"]
      endpoint = ["https://xxx-k8s.xuanyuan.run"]
    [plugins."io.containerd.grpc.v1.cri".registry.mirrors."gcr.io"]
      endpoint = ["https://xxx-gcr.xuanyuan.run"]
    [plugins."io.containerd.grpc.v1.cri".registry.mirrors."ghcr.io"]
      endpoint = ["https://xxx-ghcr.xuanyuan.run"]
    [plugins."io.containerd.grpc.v1.cri".registry.mirrors."registry.k8s.io"]
      endpoint = ["https://xxx-k8s.xuanyuan.run"]

生产的 containerd 配置里不要设置 insecure_skip_verify = true,必须用合法 TLS。一个加速地址不可用时,endpoint 里可以按顺序写多个:

endpoint = ["https://node1.xxx.xuanyuan.run", "https://node2.xxx.xuanyuan.run"]

生效与验证:

sudo systemctl restart containerd
grep -A 5 "docker.io" /etc/containerd/config.toml
ctr images pull xxx.xuanyuan.run/library/alpine:latest

kubectl run test-pod --image=nginx:latest
kubectl describe pod test-pod | grep "Image:"

Podman 配置

Podman 是无守护进程的容器引擎,配置方式不同。新建 /etc/containers/registries.conf.d/custom.conf:

unqualified-search-registries = ['docker.io']

[[registry]]
prefix = "docker.io"
location = "registry-1.docker.io"
  [[registry.mirror]]
  location = "xxx.xuanyuan.run"

[[registry]]
prefix = "k8s.gcr.io"
location = "k8s.gcr.io"
  [[registry.mirror]]
  location = "xxx-k8s.xuanyuan.run"

[[registry]]
prefix = "gcr.io"
location = "gcr.io"
  [[registry.mirror]]
  location = "xxx-gcr.xuanyuan.run"

[[registry]]
prefix = "ghcr.io"
location = "ghcr.io"
  [[registry.mirror]]
  location = "xxx-ghcr.xuanyuan.run"

验证:

podman pull docker.io/library/alpine:latest
podman inspect alpine:latest | grep -i "registry"

使用示例:从 docker pull 到 Docker Compose

拉取官方镜像

用专业版专属域名拉镜像,需要加上 xxx.xuanyuan.run/library/ 前缀:

docker pull xxx.xuanyuan.run/library/mysql:8.0
docker pull xxx.xuanyuan.run/library/nginx:1.27

如果已经配置好 registry-mirrors,还是可以写短名:

docker pull nginx:1.27
docker pull mysql:8.0

Docker Compose 实战:Nginx + MySQL

下面是一个可用的 docker-compose.yml 示例,密码用环境变量注入,不要写进仓库:

services:
  web:
    image: xxx.xuanyuan.run/library/nginx:1.27
    ports:
      - "8080:80"
    volumes:
      - ./nginx/conf:/etc/nginx/conf.d
    restart: unless-stopped
  db:
    image: xxx.xuanyuan.run/library/mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
      MYSQL_DATABASE: test_db
      MYSQL_USER: ${MYSQL_USER}
      MYSQL_PASSWORD: ${MYSQL_PASSWORD}
    volumes:
      - mysql-data:/var/lib/mysql
      - ./mysql/init:/docker-entrypoint-initdb.d
    restart: unless-stopped
    healthcheck:
      test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u${MYSQL_USER}", "-p${MYSQL_PASSWORD}"]
      interval: 10s
      timeout: 5s
      retries: 3
volumes:
  mysql-data:

对应的 .env 文件:

MYSQL_ROOT_PASSWORD=StrongRootPassw0rd!
MYSQL_USER=appuser
MYSQL_PASSWORD=AppUserPassw0rd!

安全提醒:.env 一定要加入 .gitignore,别提交进 Git;生产环境用 Vault 或 Kubernetes Secrets 管理密码;定期轮换数据库密码;数据卷目录权限收紧 (如 chmod 700)。这和咱们做渗透测试时强调的凭据管理是一个道理。

常用命令:

docker compose up -d
docker compose ps
docker compose logs -f
docker compose down
docker compose down -v

容器运行时 vs 加速配置位置对照

容器运行时 配置文件位置 加速类型支持 适用场景
Docker /etc/docker/daemon.json Docker Hub(registry-mirrors) 个人 / 企业单机
containerd /etc/containerd/config.toml 多仓库 (docker.io / ghcr.io / registry.k8s.io 等) K8s 集群 / 容器云
nerdctl 共享 containerd 配置 多仓库,命令接近 Docker 企业生产替代 Docker CLI
Podman /etc/containers/registries.conf.d/*.conf 多仓库 无守护进程 / 边缘

群晖、威联通、极空间等 NAS 设备,把专属域名写进容器引擎设置即可,但注意不要对专属域 *.xuanyuan.run 执行 docker login。

企业生产环境配置 Checklist

  • 镜像源:生产用轩辕专业版专属节点,别把已停用的公共源、不稳定的免费源写进生产机。
  • TLS:开启 HTTPS / 合法证书,别开 insecure。
  • 高可用:mirrors 配置两个以上 endpoint,单点挂了还能拉。
  • 本地缓存:用 Harbor 等把常用镜像缓存进内网。
  • 密码:别把数据库密码写进仓库,用密钥或 Secrets。
  • 权限:容器尽量非 root 运行,数据目录权限收紧。

总结

Docker 镜像加速这件事,核心是先搞清楚自己的环境属于哪一类:是单机 Docker,还是 K8s 的 containerd,还是 Podman?然后再去对应的地方配置。云厂商内网源适合同云环境,轩辕镜像专业版适合跨环境、多仓库的场景。顺便说一句,咱们博客之前写过渗透测试靶场复现 (比如 DC-1、w1r3s),这些靶场环境用 Docker 部署时,镜像加速配置正确能省不少时间。希望这篇指南能帮你在 2026 年剩下的时间里,少踩几个镜像拉取的坑。

参考来源:2026 年 10 月 最新国内 Docker 镜像源加速列表

技术前沿

2026 年 10 月 Docker 国内镜像加速配置全指南:从 Docker 到 K8s 的完整方案

2026-10-6 18:41:07

网络安全

DC-1 靶场思路演练

2024-6-1 13:30:14

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
❯
搜索