Docker 镜像加速配置全指南

Docker Registry Proxy 镜像加速服务专为开发者与运维工程师设计,旨在解决国内服务器拉取 Docker Hub 及第三方国际容器镜像时频繁出现的连接重置、TLS 握手超时、下载龟速等难题。

支持 Docker Hub、GitHub Packages (GHCR)、Google GCR、Kubernetes (K8s)、Red Hat Quay、Microsoft MCR、NVIDIA NGC、AWS ECR 等几乎所有主流容器注册表。


1. 命令行直接拉取(免配置推荐)

无需更改服务器任何底层配置文件,直接在镜像名称前拼接加速前缀即可极速拉取:

# 1. 官方 Docker Hub 基础镜像 (library/ 默认分组)
docker pull gh-proxy.org/docker/nginx:latest
docker pull gh-proxy.org/docker/ubuntu:22.04

# 2. 带系统架构前缀镜像
docker pull gh-proxy.org/docker/amd64/nginx:latest

# 3. Docker Hub 第三方开源镜像
docker pull gh-proxy.org/docker/cleverest/crproxy
docker pull gh-proxy.org/docker/adguard/adguardhome
docker pull gh-proxy.org/docker/docker.io/adguard/adguardhome

# 4. Google 容器注册表 (GCR)
docker pull gh-proxy.org/docker/gcr.io/kaniko-project/executor:debug

# 5. GitHub 容器注册表 (GHCR)
docker pull gh-proxy.org/docker/ghcr.io/openfaas/queue-worker

# 6. 新版 Kubernetes 镜像仓库 (registry.k8s.io)
docker pull gh-proxy.org/docker/registry.k8s.io/kube-apiserver:v1.30.0

# 7. 旧版 Kubernetes 镜像仓库 (k8s.gcr.io)
docker pull gh-proxy.org/docker/k8s.gcr.io/etcd:3.5.7-0

# 8. Red Hat Quay 镜像库 (quay.io)
docker pull gh-proxy.org/docker/quay.io/calico/cni

# 9. Microsoft 容器注册表 (MCR)
docker pull gh-proxy.org/docker/mcr.microsoft.com/powershell

# 10. Elastic 镜像注册表
docker pull gh-proxy.org/docker/docker.elastic.co/elasticsearch/elasticsearch:8.1.0

# 11. NVIDIA GPU NGC 注册表
docker pull gh-proxy.org/docker/nvcr.io/nvidia/cuda:12.1.0-runtime-ubuntu20.04

# 12. AWS ECR Public 镜像
docker pull gh-proxy.org/docker/public.ecr.aws/nginx/nginx:latest

# 13. GitLab 容器注册表
docker pull gh-proxy.org/docker/registry.gitlab.com/gitlab-org/cli:v1.45.0

# 14. Red Hat Universal Base Images (UBI)
docker pull gh-proxy.org/docker/registry.access.redhat.com/ubi8/ubi:latest

# 15. Oracle 容器注册表
docker pull gh-proxy.org/docker/container-registry.oracle.com/os/oraclelinux:8

# 16. SUSE / openSUSE 镜像
docker pull gh-proxy.org/docker/registry.suse.com/suse/sle15:latest
docker pull gh-proxy.org/docker/registry.opensuse.org/opensuse/tumbleweed:latest

2. Docker Daemon 全局镜像源配置

配置后,所有标准的 docker pull 命令均会自动通过加速镜像源分发,无需每次手动拼接前缀。

编辑 /etc/docker/daemon.json(若文件不存在则新建):

{
  "registry-mirrors": [
    "https://gh-proxy.org"
  ]
}

重新加载 systemd 并重启 Docker 服务:

sudo systemctl daemon-reload
sudo systemctl restart docker

验证配置是否生效:

docker info | grep -A 3 "Registry Mirrors"

3. Kubernetes (K8s) 部署配置

在 Kubernetes 的资源编排清单(如 Deployment 或 Pod YAML)中,直接将 image 字段配置为加速镜像路径:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
        - name: nginx
          image: gh-proxy.org/docker/ghcr.io/nginxinc/nginx-unprivileged:latest
          ports:
            - containerPort: 80
        - name: redis
          image: gh-proxy.org/docker/ghcr.io/bitnami/redis:alpine
          ports:
            - containerPort: 6379

4. Docker Compose 编排文件配置

docker-compose.yml 配置文件中,修改各服务的 image 属性指向代理加速源:

version: '3.8'
services:
  web:
    image: gh-proxy.org/docker/ghcr.io/nginxinc/nginx-unprivileged:latest
    ports:
      - '80:80'
    volumes:
      - ./html:/usr/share/nginx/html

  database:
    image: gh-proxy.org/docker/mcr.microsoft.com/mssql/server:2022-latest
    environment:
      ACCEPT_EULA: Y
      SA_PASSWORD: 'MyStrongPassword123!'
    volumes:
      - mssql_data:/var/opt/mssql

  cache:
    image: gh-proxy.org/docker/ghcr.io/bitnami/redis:alpine
    ports:
      - '6379:6379'

volumes:
  mssql_data:

5. Dockerfile 多阶段构建优化

在编写 Dockerfile 时,将 FROM 基础镜像替换为加速镜像源,能显著缩减 CI/CD 流水线的镜像下载时间:

# 构建阶段使用加速镜像
FROM gh-proxy.org/docker/ghcr.io/nodejs/node:18-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build

# 生产运行阶段
FROM gh-proxy.org/docker/ghcr.io/nginxinc/nginx-unprivileged:latest
COPY --from=builder /app/dist /usr/share/nginx/html

# 示例:微软 .NET 运行时加速
FROM gh-proxy.org/docker/mcr.microsoft.com/dotnet/aspnet:8.0 AS runtime
WORKDIR /app
COPY --from=builder /app/publish .
ENTRYPOINT ["dotnet", "MyApp.dll"]

6. CI/CD 工作流集成 (GitHub Actions 示例)

在 GitHub Actions 或自建 GitLab CI 流水线中,通过构建参数(--build-arg)动态注入加速镜像源:

name: Build and Deploy
on: [push]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Build with accelerated base images
        run: |
          docker build -t myapp:latest \
            --build-arg BASE_IMAGE=gh-proxy.org/docker/ghcr.io/nodejs/node:18-alpine .

      - name: Test with accelerated images
        run: |
          docker run --rm \
            gh-proxy.org/docker/mcr.microsoft.com/dotnet/runtime:8.0 \
            dotnet --version

7. Podman 镜像源配置

对于使用 Podman 替代 Docker 的环境,可以通过编辑 /etc/containers/registries.conf 实现加速:

# 编辑 /etc/containers/registries.conf
[[registry]]
prefix = "ghcr.io"
location = "gh-proxy.org/docker/ghcr.io"

或者在命令行中直接拉取代理路径:

podman pull gh-proxy.org/docker/ghcr.io/alpine/alpine:latest
podman pull gh-proxy.org/docker/ghcr.io/nginxinc/nginx-unprivileged:latest

8. Containerd 运行时镜像源配置

在 Kubernetes、K3s 或纯 Containerd 环境中,编辑 /etc/containerd/config.toml

# 编辑 /etc/containerd/config.toml
[plugins."io.containerd.grpc.v1.cri".registry.mirrors]
  [plugins."io.containerd.grpc.v1.cri".registry.mirrors."ghcr.io"]
    endpoint = ["https://gh-proxy.org/docker/ghcr.io"]
  [plugins."io.containerd.grpc.v1.cri".registry.mirrors."gcr.io"]
    endpoint = ["https://gh-proxy.org/docker/gcr.io"]
  [plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"]
    endpoint = ["https://gh-proxy.org/docker"]

保存后重启 containerd 服务生效:

sudo systemctl restart containerd

注意事项

  1. 公益免费与合规:本服务纯属公益加速访问,旨在加快开源开发与容器构建,请勿用于任何非法渗透或恶意行为。
  2. 公开镜像支持:当前加速体系专注于公开镜像(Public Images);出于安全保障与匿名拉取机制,暂不支持需要密码凭证登录的私有仓库(Private Images)。
  3. 多协议兼容:全面兼容 Docker CLI、Podman、Containerd、CRI-O、K8s 等多种容器运行时。
  4. 全球多节点自愈:集群自动监测节点健康状态,一旦发生网络抖动,边缘路由将在毫秒级内自动无缝调度至最优可用节点。

💬 互动交流与反馈