容器镜像

藏云阁镜像仓库 汇聚了全球开源主流镜像托管平台的主流容器镜像,且人工合规审核、自动同步、国内高速下载。

支持主流的镜像托管平台的镜像 docker.iogcr.iogchr.ioquay.ioregistry.k8s.iodocker.elastic.comcr.microsoft.comnvcr.iok8s.gcr.io

目前提供 普通下载超高速下载 两种模式。

  • 普通下载:直接基于镜像地址进行下载,虽然不限速,但会受限于服务器带宽上限。
  • 超高速下载:可以同时从多个镜像仓库下载同一个容器镜像的不同层,从而提升下载速度。

普通下载

普通下载不需要进行任何特殊配置,在 https://cncfstack.com/app/image 仓库中搜索镜像,点击镜像卡片进入镜像详情页面获取镜像 拉取地址 就是镜像的下载地址,直接 docker pull 即可

docker pull registry.cncfstack.com/docker.io/library/nginx:1.29.3

超高速下载

超高速下载可以同时从多个镜像仓库下载同一个容器镜像的不同层,从而提升下载速度。

配置超高速下载的主要步骤

  1. 创建自签证书
  2. 复制并创建Nginx配置
  3. 运行Nginx服务
  4. 配置 Docker insecure
  5. 验证镜像拉取

创建自签证书

使用 openssl 命令,自动完成CA和客户端证书的创建,自动生成本地的 DNS:localhost,IP:127.0.0.1 证书文件 cert.pem 和 对应的密钥文件 key.pem 文件。

openssl req -x509 -newkey rsa:4096 \
  -keyout key.pem \
  -out cert.pem \
  -days 3650 \
  -nodes \
  -subj "/CN=localhost" \
  -addext "subjectAltName=DNS:localhost,IP:127.0.0.1"

创建Nginx配置

藏云阁提供的 nginx 配置文件用于并行加速镜像下载。

假设配置文件名称为 nginx.conf。注意文件名称,后面docker run启动会挂载该文件

配置文件内容

events {
    worker_connections 1024;
}
http {
    resolver 223.5.5.5 valid=30s; 
    upstream registry {
        server registry1.cncfstack.com:443;
        server registry2.cncfstack.com:443;
        server registry3.cncfstack.com:443;
        server registry4.cncfstack.com:443;
        server registry5.cncfstack.com:443;
        server registry6.cncfstack.com:443;
        server registry7.cncfstack.com:443;
        server registry8.cncfstack.com:443;
        server registry9.cncfstack.com:443;
        server registry10.cncfstack.com:443;
        least_conn;
    }
    server {
        listen 5000 ssl;
        server_name _;
        ssl_certificate /tmp/cert.pem;
        ssl_certificate_key /tmp/key.pem;
        location /v2/ {
            proxy_pass https://registry;
            proxy_set_header Host registry.cncfstack.com;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
        }
    }
}

运行Nginx服务

使用 Docker 运行 nginx 服务,并挂载启动证书和配置文件

docker run --name cncfstack-registry -itd -p 6666:5000 \
-v ./nginx.conf:/etc/nginx/nginx.conf \
-v ./key.pem:/tmp/key.pem \
-v ./cert.pem:/tmp/cert.pem \
registry.cncfstack.com/docker.io/library/nginx:1.29.3

可以执行 docker logs cncfstack-registry 确认是否正常启动

配置 Docker insecure

由于第一步的证书是自签证书,所以需要给 Docker 配置 insecure

修改或创建 /etc/docker/daemon.json 文件

{
  "insecure-registries" : ["127.0.0.1:6666"]
}

注意修改完配置文件后,需要重新 dockerd 服务才能生效

systemctl daemon-reload
systemctl restart docker

验证镜像拉取

验证镜像拉取,使用 docker pull 命令拉取镜像,并使用 docker images 命令查看镜像列表。

拉取的镜像需要在 https://cncfstack.com/app/image 仓库中存在,若不存在可以自行创建同步任务。

注意需要将镜像拉取地址 registry.cncfstac.com 修改为 127.0.0.1:6666,其他路径保持不变。

docker pull 127.0.0.1:6666/docker.io/library/mysql:9.4.0