自建 docker hub 容器镜像缓存服务和加速服务

自建容器镜像缓存服务的原因:

docker pull limit refrence

未登录用户,每 6 小时只允许 pull 100 次
已登录用户,每 6 小时只允许 pull 200 次

意味着公开的镜像代理服务,请求超过次数,就会被限制速率

目标: 自建docker镜像加速

使用 docker-compose 快速搭建容器镜像缓存

备注:

192.168.3.121 代理服务器地址
wildcard.xiaoshuogeng.com.fullchain.pem 域名证书公钥
wildcard.xiaoshuogeng.com.key.pem 域名证书私钥
docker.xiaoshuogeng.com:5000 自建容器加速、缓存服务的访问域名

其实也可以作为 registry.k8s.io、 k8s.gcr.io、 gcr.io 的镜像缓存,
只需要把 REGISTRY_PROXY_REMOTEURL 分别换成换成 registry.k8s.io、 k8s.gcr.io、 gcr.io、 quay.io等即可
也就是使用多个端口来建立不同的服务

version: "3"
services:
    docker-registry:
        image: registry:2
        container_name: registry-01
        restart: always
        ports:
            - "5000:5000"
        volumes:
            - /data/tls:/tls   
            - /data/docker-registry:/data   # 数据目录
        environment:
            - REGISTRY_PROXY_REMOTEURL=https://registry-1.docker.io
            - REGISTRY_PROXY_USERNAME=username 
            - REGISTRY_PROXY_PASSWORD=password
            - REGISTRY_HTTP_TLS_CERTIFICATE=/tls/wildcard.xiaoshuogeng.com.fullchain.pem
            - REGISTRY_HTTP_TLS_KEY=/tls/wildcard.xiaoshuogeng.com.key.pem
            - REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY=/data
            - http_proxy=http://192.168.3.121:1080  # 使用 http 代理
            - https_proxy=http://192.168.3.121:1080 # 使用 http 代理

docker 使用加速器(也就是使用缓存镜像)

cat /etc/docker/daemon.json


{
  "registry-mirrors": [
	  "https://docker.xiaoshuogeng.com:5000"
  ],
  "insecure-registries":[],
   "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "storage-driver": "overlay2",
  "storage-opts": [
    "overlay2.override_kernel_check=true"
  ],
  "ipv6": true,
  "fixed-cidr-v6": "fd00::/64",
  "experimental": true,
  "ip6tables": false
}

containerd 使用加速器

配置文档: https://github.com/containerd/containerd/blob/main/docs/hosts.md

mkdir -p /etc/containerd/certs.d/docker.io

vi /etc/containerd/certs.d/docker.io/hosts.toml
server = "https://docker.io"

[host."https://docker.xiaoshuogeng.com:5000"]
  capabilities = ["pull", "resolve"]


查看docker hub 使用次数和速率限制信息

# 获得token 

TOKEN=$(curl "https://auth.docker.io/token?service=registry.docker.io&scope=repository:ratelimitpreview/test:pull" | jq -r .token)

# 查看信息
curl --head -H "Authorization: Bearer $TOKEN" https://registry-1.docker.io/v2/ratelimitpreview/test/manifests/latest

参考文档

  1. 自建docker hub 容器缓存加速器,只加速官方镜像版的 nginx 的配置
  2. docker pull Download rate limit
  3. Mirroring Docker Hub
  4. docker Authenticate proxy with nginx
  5. 容器代理配置
  6. containerd Registry Configuration
  7. containerd use registry mirrors
  8. linux 快速安装docker
  9. 使用acme.sh自助签发Let's Encrypt 的SSL证书
  10. 自建拉取registry.k8s.io、k8s.gcr.io、gcr.io、quay.io、ghcr.io 容器镜像的服务
  11. Dockerfile
  12. Compose file
  13. 容器运行时有哪些 Container Runtimes
  14. docker auth token
  15. skopeo
  16. docker-library/official-images
  17. ustclug/mirrorrequest/issues/276 提供常见docker镜像
  18. containerd Configure Image Registry
posted @ 2022-08-11 10:24  jingjingxyk  阅读(893)  评论(0编辑  收藏  举报