自建 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
参考文档
- 自建docker hub 容器缓存加速器,只加速官方镜像版的 nginx 的配置
- docker pull Download rate limit
- Mirroring Docker Hub
- docker Authenticate proxy with nginx
- 容器代理配置
- containerd Registry Configuration
- containerd use registry mirrors
- linux 快速安装docker
- 使用acme.sh自助签发Let's Encrypt 的SSL证书
- 自建拉取registry.k8s.io、k8s.gcr.io、gcr.io、quay.io、ghcr.io 容器镜像的服务
- Dockerfile
- Compose file
- 容器运行时有哪些 Container Runtimes
- docker auth token
- skopeo
- docker-library/official-images
- ustclug/mirrorrequest/issues/276 提供常见docker镜像
- containerd Configure Image Registry