您现在的位置是:热点 >>正文
彻底解决 Gcr、Quay、DockerHub 镜像下载难题!
热点3443678人已围观
简介...
本文转载自微信公众号「云原生实验室」,作者米开朗基杨。转载本文请联系云原生实验室公众号。
前言
在使用 Docker 和 Kubernetes 时,我们经常需要访问 gcr.io 和 quay.io 镜像仓库,由于众所周知的原因,这些镜像仓库在中国都无法访问,唯一能访问的是 Docker Hub,但速度也是奇慢无比。gcr.azk8s.cn 是 gcr.io 镜像仓库的代理站点,原来可以通过 gcr.azk8s.cn 访问 gcr.io 仓库里的镜像,但是目前 *.azk8s.cn 已经仅限于 Azure 中国的 IP 使用,不再对外提供服务了。国内其他的镜像加速方案大多都是采用定时同步的方式来缓存,这种方法是有一定延迟的,不能保证及时更新,ustc 和七牛云等镜像加速器我都试过了,非常不靠谱,很多镜像都没有。
为了能够顺利访问 gcr.io 等镜像仓库,我们需要在墙外自己搭建一个类似于 gcr.azk8s.cn 的镜像仓库代理站点。利用 Docker 的开源项目 registry[1] 就可以实现这个需求,registry 不仅可以作为本地私有镜像仓库,还可以作为上游镜像仓库的缓存,也就是 pull through cache。
先来感受下速度:
1. 前提条件
一台能够施展魔法的服务器(你懂得,可以直接访问 gcr.io)
一个域名和域名相关的 SSL 证书(doc彻底ker pull 镜像时需要验证域名证书),一般用 Let's Encrypt[2] 就够了。
2. 核心思路
registry 可以通过设置参数 remoteurl 将其作为远端仓库的缓存仓库,这样当你通过这个私有仓库的地址拉取镜像时,regiistry 会先将镜像缓存到本地存储,然后再提供给拉取的客户端(有可能这两个步骤是同时的,我也不太清楚)。我们可以先部署一个私有 registry,然后将 remoteurl 设为需要加速的镜像仓库地址,基本上就可以了。
3. 定制 registry
为了能够支持缓存 docker.io、gcr.io、k8s.gcr.io、quay.io 和 ghcr.io 等常见的公共镜像仓库,我们需要对 registry 的配置文件进行定制,Dockerfile 如下:
FROM registry:2.6 LABEL maintainer="registry-proxy Docker Maintainers https://fuckcloudnative.io" ENV PROXY_REMOTE_URL="" DELETE_ENABLED="" COPY&nbs解决p;entrypoint.sh /entrypoint.sh
其中 entrypoint.sh 用来将环境变量传入配置文件:
entrypoint.sh
#!/bin/sh set -e CONFIG_YML=/etc/docker/registry/config.yml if [ -n "$PROXY_REMOTE_URL" -a `grep -c "$PROXY_REMOTE_URL" $CONFIG_YML` -eq 0 ]; then echo "proxy:" >> $CONFIG_YML echo " remoteurl: $PROXY_REMOTE_URL" >> $CONFIG_YML Gecho " username: $PROXY_USERNAME" >> $CONFIG_YML echo " password: $PROXY_PASSWORD" >> $CONFIG_YML echo "------ Enabled proxy to remote: $PROXY_REMOTE_URL ------" elif [ $DELETE_ENABLED = true -a `grep -c "delete:" $CONFIG_YML` -eq 0 ]; then sed -i '/rootdirectory/a delcrete:' $CONFIG_YML sed -i '/delete/a enabled: true' $CONFIG_YML echo "------ Enabled local storage delete -----" fi sed -i "/headers/a Access-Control-Allow-Origin: ['*']" $CONFIG_YML sed -i "/headers/a Access-Control-Allow-Methods: ['HEAD', 'GET', 'OPTIONS', 'DELETE']" $CONFIG_YML sed 、Q-i "/headers/a Access-Control-Expose-Headers: ['Docker-Content-Digest']" $CONFIG_YML case "$1" in *.yaml|*.yml) set -- registry serve "$@" ;; serve|garbage-collect|help|-*) set -- registry "$@" ;; esac exec "$@"
4. 启动缓存服务
构建好 Docker 镜像之后,就可以启动服务了。如果你不想自己构建,可以直接用我的镜像:yangchuansheng/registry-proxy。
一般来说,即使你要同时缓存 docker.io、gcr.io、k8s.gcr.io、quay.io 和 ghcr.io,一台 1C 2G 的云主ua机也足够了(前提是你不在上面跑其他的服务)。我的博客、评论服务和其他一堆乱七八糟的服务都要跑在云主机上,所以一台是不满足我的需求的,我直接买了两台腾讯云香港轻量级服务器。
既然买了两台,肯定得组个 k3s 集群啦,看主机名就知道我是用来干啥的。其中 2C 4G 作为 master 节点,1C 2G 作为 node 节点。
以 docker.io 为例,创建资源清单:
dockerhub.yaml
apiVersion: apps/v1 kind: Deployment metadata: name: dockerhub labels: app: dockerhub spec: replicas: 1 selector: matchLabels: app: dockerhub temy、plate: metadata: labels: app: dockerhub spec: affinity: podAntiAffinity: preferredDuringSchedulingIgnoredDuringExecution: - podAffinityTerm: Do labelSelector: matchExpressions: - key: app operator: In &cknbsp;values: - dockerhub topologyKey: kubernetes.io/hostname weight: 1 dnsPolicy: None dnsConfig: nameservers:  er; - 8.8.8.8 - 8.8.4.4 containers: - name: dockerhub image: yangchuansheng/registry-proxy:latest env: - name: PROXY_REMOTE_URL  Hu; value: https://registry-1.docker.io - name: PROXY_USERNAME value: yangchuansheng - name: PROXY_PASSWORD value: ** ports: - containerPort:&nbsb p;5000 protocol: TCP volumeMounts: - mountPath: /etc/localtime name: localtime - mountPath: /var/lib/registry name: registry v镜像olumes: - name: localtime hostPath: path: /etc/localtime - name: registry hostPath: path: /var/lib/registry --- apiVersion: v1 kind: Service metadata: name:&nbs下载p;dockerhub labels: app: dockerhub spec: selector: app: dockerhub ports: - protocol: TCP name: http port: 5000 targetPort: 5000
使用资源清单创建对应的服务:
Tags:
相关文章
德克萨斯州检察官调查 Meta 和 Character.ai 的儿童心理健康 AI 聊天机器人
热点近日,德克萨斯州检察官肯・帕克斯顿(Ken Paxton)对 Meta 公司和人工智能初创企业 Character.ai 展开了调查,重点关注这些公司是否在推广其人工智能聊天机器人时存在误导行为,特别...
【热点】
阅读更多祸不单行!微软云计算业务遭反垄断投诉
热点北京时间11月9日早间消息,据报道,在收购动视暴雪面临欧盟反垄断审查之际,微软的云计算业务面临着新的反垄断投诉。当地时间周三,贸易团体CISPE(其成员包括亚马逊)向欧盟反垄断监管机构提出申诉。 CI...
【热点】
阅读更多马斯克宣布 X 平台将推出全新 AI 推荐算法,提升信息流质量
热点马斯克近日在社交媒体平台 X 上发布消息,透露该平台将在本周晚些时候推出一项更新后的算法,旨在实现完全由人工智能驱动的推荐系统。马斯克指出,用户将会感受到信息流的改善,这种变化并不是因为用户行为的调整...
【热点】
阅读更多
热门文章
最新文章
友情链接
- 标签: 康师傅
- https://www.metalmensales.com/?action=QUERY&s=谷歌霸屏服务【tg:seogoogle987】,wE3
- https://www.military-history.org/?s=谷歌霸屏服务【tg:seogoogle987】,gC4
- https://www.manga-news.com/index.php/recherche/?q=谷歌霸屏服务【tg:seogoogle987】,dV6
- https://www.wellbees.com/catalogsearch/result/?action=CHECK&q=谷歌霸屏服务【tg:seogoogle987】,z6G
- https://www.lyrics.com/lyrics/kkk3谷歌霸屏服务【tg:seogoogle987】,laL
- https://www.abbreviations.com/谷歌霸屏服务【tg:seogoogle987】et6
- https://www.yidian51.com/taobao/谷歌霸屏服务【tg:seogoogle987】,ghJ
- https://www.teacherspayteachers.com/Browse/Price-Range/Free/Search:Western International University Physics degree=谷歌霸屏服务【tg:seogoogle987】,WqN
- https://www.urmc.rochester.edu/news/search?q=谷歌霸屏服务【tg:seogoogle987】,JWR
- https://www.resilienz-akademie.com/?cat=71&s=谷歌霸屏服务【tg:seogoogle987】,L23
- https://www.sbaad.no/?s=谷歌霸屏服务【tg:seogoogle987】,iXs
- https://www.nissin.com/jp/search/?cat=105&q=谷歌霸屏服务【tg:seogoogle987】,Wiy
- https://www.kingston.gov.uk/site-search/results/?q=谷歌霸屏服务【tg:seogoogle987】,M68
- https://www.remit.co.jp/vi/?s=谷歌霸屏服务【tg:seogoogle987】z4P
- https://www.wuv.edu/?s=谷歌霸屏服务【tg:seogoogle987】,dy6
- https://www.dba.dk/soeg/?soeg=谷歌霸屏服务【tg:seogoogle987】AGr
- https://www.polar-tech.com/?action=QUERY&s=谷歌霸屏服务【tg:seogoogle987】,8Ib
- https://search.danawa.com/dsearch.php?query=谷歌霸屏服务【tg:seogoogle987】5Mb
- https://www.teamlab.art/pt/?submit=谷歌霸屏服务【tg:seogoogle987】,tWX
- https://www.nbm.org/?action=QUERY&s=谷歌霸屏服务【tg:seogoogle987】,Whj
- https://www.hanbat.ac.kr/search/front/Search.jsp?qt=谷歌霸屏服务【tg:seogoogle987】iot
- https://www.teacherspayteachers.com/Browse/Price-Range/Free/Search:谷歌霸屏服务【tg:seogoogle987】,Uu3
- https://www.oikos-tecnics.com/?s=谷歌霸屏服务【tg:seogoogle987】,noI
- https://www.navymwr.org/search/?query=谷歌霸屏服务【tg:seogoogle987】,hxx
- https://www.uckfieldtc.gov.uk/?s=谷歌霸屏服务【tg:seogoogle987】,40R
- https://www.shacknews.com/editorial-search?q=谷歌霸屏服务【tg:seogoogle987】,gVT
- https://www.duksung.ac.kr/search/front/Search.jsp?qt=谷歌霸屏服务【tg:seogoogle987】1YS
- https://www.wmfe.org/?s=谷歌霸屏服务【tg:seogoogle987】,L8A
- https://www.resopal.de/catalogsearch/result/?action=SEARCH&q=谷歌霸屏服务【tg:seogoogle987】,m2J
- https://www.totolink.vn/search/谷歌霸屏服务【tg:seogoogle987】,thc
- https://www.udc.co.uk/index.php?route=product/search&sort=p.price&order=DESC&tag=谷歌霸屏服务【tg:seogoogle987】,ENZ
- https://5gaa.org/?token=6e2l7hjt2i26gzgctgwdrv7v0j6nxorq&s=谷歌霸屏服务【tg:seogoogle987】1ik
- https://www.televes.com/es/catalogsearch/result/?q=谷歌霸屏服务【tg:seogoogle987】,h2m
- https://www.lee.com/search?q=谷歌霸屏服务【tg:seogoogle987】,Ipu
- https://www.xvideos.com/tags/谷歌霸屏服务【tg:seogoogle987】,TyV
- https://www.kawainter.com/catalogsearch/result/?q=谷歌霸屏服务【tg:seogoogle987】,FeP
- https://www.xbiao.com/search/index?tpf&wd=谷歌霸屏服务【tg:seogoogle987】,A0M
- https://www.searcychamber.com/list/search?AsfnA=DtkTQzs&q=谷歌霸屏服务【tg:seogoogle987】,2U2
- https://www.teamlab.art/zh-hans/?submit=谷歌霸屏服务【tg:seogoogle987】,Z2X
- https://www.trockenmittel.ch/catalogsearch/result/?iC=ZM3&q=谷歌霸屏服务【tg:seogoogle987】,TfC
- https://dict.naver.com/dict.search?dicQuery&query=谷歌霸屏服务【tg:seogoogle987】f1S
- https://www.nonsolocap.it/cap?action=SEARCH&k=谷歌霸屏服务【tg:seogoogle987】,ZB0
- https://www.target.com/s?searchTerm=谷歌霸屏服务【tg:seogoogle987】,WQ4
- https://www.seagrant.wisc.edu/?page=63&s=谷歌霸屏服务【tg:seogoogle987】,pRR
- https://www.losgatoschamber.com/list/search?action=SEARCH&q=谷歌霸屏服务【tg:seogoogle987】,Rkp
- https://www.livehindustan.com/tags/谷歌霸屏服务【tg:seogoogle987】,BOj
- https://www.tmtpost.com/search?q=谷歌霸屏服务【tg:seogoogle987】,7BG
- https://www.lyrics.com/lyrics/谷歌霸屏服务【tg:seogoogle987】,b2V
- https://www.welshmountainzoo.org/shop/index.php?routeproduct/search&tag=谷歌霸屏服务【tg:seogoogle987】,w10
- https://www.abbreviations.com/谷歌霸屏服务【tg:seogoogle987】idR