2021年沒有外網服務器,怎么下載gcr.io鏡像?


背景

部署 k8s 時經常遇到的難題:如何下載 gcr.io 的鏡像?下面以 ingress-nginx:0.43.0 為例介紹踩過的坑及最終的解決辦法。

踩過的坑

谷歌雲

注冊谷歌雲賬戶,通過控制台下載 ingress-nginx:0.43.0 鏡像,重命名后上傳回國內的鏡像倉庫,以供使用。
親測上傳一個 282 MB 的鏡像,阿里雲鏡像倉庫,騰訊鏡像倉庫,一個小時還未上傳完成,放棄。
於是注冊 hub.docker.com 上傳到 hub.docker.com,速度很快,本機從 hub.docker.com 拉取鏡像,又是二十分鍾還未完成,放棄。

阿里雲代理倉庫

阿里雲代理倉庫地址為:registry.aliyuncs.com/google_containers
很多新的鏡像都沒有,猜測是不維護了,放棄。

解決方法

后來在阿里雲鏡像倉庫那里看到一個海外構建的選項,於是嘗試以下方法:

github

在 github 創建一個 repository,創建好 git clone 到本地,在本地創建所需下載鏡像的 Dockerfile,本地目錄的層級可以是:鏡像名 --> 版本號 --> Dockerfile 。創建后上傳到 github,這是我的github地址 ,參考如下截圖:

打開 ingress-nginx 的 Dockerfile

FROM k8s.gcr.io/ingress-nginx/controller:v0.43.0
MAINTAINER liyi

看到這里應該差不多明白了,就是讓阿里雲鏡像倉庫去幫我們下載這個鏡像。

阿里雲鏡像

創建鏡像倉庫

選擇鏡像構建所依賴的在github倉庫
切記勾上 海外機器構建

添加構建規則

點擊立即構建

等一會鏡像就構建成功了,可以看到日志:

docker image building is started ...
[ fetch stage begin.]
fetch dockerfile and context
Cloning into '/user_data/1351706646383462/GIT_HUB/fsckzy-quayio'...
[fetch successfully.]
==========================================
......
==========================================
[docker build stage begin.]
Sending build context to Docker daemon 2.048kB
Step 1/2 : FROM k8s.gcr.io/ingress-nginx/controller:v0.43.0
v0.43.0: Pulling from ingress-nginx/controller
801bfaa63ef2: Already exists
ebc605c8c477: Pulling fs layer
......
...
ad50de7c1a14: Pull complete
Digest: sha256:9bba603b99bf25f6d117cf1235b6598c16033ad027b143c90fa5b3cc583c5713
Status: Downloaded newer image for k8s.gcr.io/ingress-nginx/controller:v0.43.0
---> 38dca1cbd231
Step 2/2 : MAINTAINER liyi
---> Running in 7a3ef71d3191
Removing intermediate container 7a3ef71d3191
---> 1feb7033bf16
Successfully built 1feb7033bf16
Successfully tagged registry.cn-hangzhou.aliyuncs.com/smy-repo/ingress-nginx:0.43.0
[ build successfully.]
==========================================
[push stage begin.]

本機下載該鏡像,再重命名即可

docker pull registry.cn-hangzhou.aliyuncs.com/smy-repo/ingress-nginx:0.43.0


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM