如何在國內順暢下載被牆的 Docker 鏡像?

因爲不可描述的緣由,有些 Docker 鏡像在國內沒法下載,好比用於構建 Kubernetes 集羣的鏡像。git

這篇文章就是教你如何在國內順暢地下載這些被牆的 Docker 鏡像。github

那麼如何作呢?docker

這裏主要使用阿里雲提供的 "容器鏡像服務",它不但提供了鏡像的託管能力,還提供了國內外鏡像構建服務,並且還免費。shell

注意,此文講的跟阿里雲提供的 "容器鏡像加速" 不是同一個東西,加速是解決速度慢的問題,前提是能訪問。本文講的是在國內因爲不可描述的緣由根本沒法訪問的鏡像(好比 k8s.gcr.io/kube-apiserver )。api

一句話解釋:使用阿里雲提供的容器鏡像服務,構建咱們本身的 Docker 鏡像。app

FROM k8s.gcr.io/kube-apiserver:v1.17.3
MAINTAINER yourname <yourname@examle.com>
複製代碼

明白了吧?阿里雲

若是還不明白,能夠跟着個人步驟操做一遍,總共只有兩步,包教會。spa

這裏以 k8s.gcr.io/kube-apiserver:v1.17.3 這個鏡像爲例進行演示。3d

第一步:在 GitHub 上建立代碼倉庫

能夠參考個人 github.com/heqingbao/d… ,在 kube-apiserver 目錄下建立 Dockerfile 文件:code

FROM k8s.gcr.io/kube-apiserver:v1.17.3
MAINTAINER yourname <yourname@example.com>
複製代碼

第二步:阿里雲建立鏡像倉庫

登陸 阿里雲鏡像服務

2.1 建立命名空間

建立一個命名空間,"默認倉庫類型" 公有 或 私有 均可以。我這裏是 私有。 好比我這裏就叫 k8s-docker-image-mirror,如圖:

2.2 建立鏡像倉庫

建立一個鏡像倉庫,地域選擇離本身近的,命名空間選擇上面建立的 k8s-docker-image-mirror,倉庫名稱爲 kube-apiserver,倉庫類型任意(我這選擇公開),如圖:

點擊『下一步』,開始關聯代碼倉庫,這裏選擇 GitHub,關聯第一步在 GitHub 上建立的代碼倉庫:

能夠看到,除了 GitHub ,還有不少其它的選項,若是 GitHub 訪問也吃力的話,能夠選擇其它的類型。

勾選『海外機器構建』,第一個自動構建鏡像勾不勾選均可以,後面配置構建策略的時候能夠更改。

而後點擊『建立鏡像倉庫』

2.3 添加構建規則

這一步是配置構建規則,好比分支名、Dockerfile 路徑等信息,如圖:

進入構建頁面,點擊『添加規則』,如圖:

添加一條構建規則,如圖:

如上,內容可根據狀況自行修改。

2.4 構建鏡像

建立完構建規則後,點擊『當即構建』,如圖:

稍等會兒,看到構建狀態成功,就表示構建完成,如圖:

2.5 獲取鏡像

鏡像構建完成了,開始獲取鏡像,如圖:

按照如上指南操做便可,好比我這裏能夠這樣獲取:

docker pull registry.cn-shenzhen.aliyuncs.com/k8s-docker-image-mirror/kube-apiserver:latest
複製代碼

能夠試一下,速度很快。

注意,第一步 docker login 的時候,須要輸入的密碼並非阿里雲的登陸密碼,而是這裏單獨設置的:

下載到鏡像以後,就是改 Tag 了,好比要搭建 K8s 集羣,經過這種方式下載後,須要把鏡像 Tag 修改爲:

docker tag registry.cn-hangzhou.aliyuncs.com/k8s-docker-image-mirror/kube-apiserver k8s.gcr.io/kube-apiserver:v1.17.3
複製代碼

理論上經過這種方式能夠構建任意國外被牆的鏡像了,好比我就經過這種方式構建了 K8s 集羣的全部鏡像,如圖:

到此結束,你學會了嗎?(不會再看一遍)


推薦關注公衆號:非著名開發者,訂閱更多內容

相關文章
相關標籤/搜索