微服務架構 - 巧妙獲取被牆的Docker鏡像


在國內由於種種原因,有些Docker鏡像直接是獲取不到的,特別是k8s中的一些鏡像。本人在部署k8s中的helm組件時需要獲取tiller鏡像,如果直接用如下命令:

docker pull gcr.io/kubernetes-helm/tiller:v2.12.1

會由於網絡原因連接不上從而導致獲取鏡像失敗。

經查相關資料,可以有一種“曲線求國”的方案,在此通過實現巧妙獲取被牆的tiller鏡像方法分享給大家。

1、前期准備

這種“曲線求國”的方案,首先要准備2個網站的賬號:

  • GitHub,需要有一個GitHub賬號,如果沒有的,可以到官網https://github.com上注冊(對於程序員來說,這個是GitHub必備的)
  • Docker Hub,需要有一個Docker Hub賬號,如果沒有的,可以到官網https://hub.docker.com上注冊(對於學Docker的,這個Docker Hub也是必備的)

2、自定義Dockerfile

通過定義Dockerfile可以構建出鏡像,為此首先先自定義一個tiller的鏡像的Dockerfile文件,即:

FROM gcr.io/kubernetes-helm/tiller:v2.12.1
MAINTAINER 1256122943@qq.com

通過上面的Dockerfile內容可以發現只是以gcr.io/kubernetes-helm/tiller:v2.12.1為基礎鏡像,沒有加其它實質的東西,這樣保證了自定義Dockerfile構建的鏡像跟原來的tiller鏡像是一樣的。

定義好該Dockerfile文件,在本機上構建是不行的,因為在本機上是獲取不到基礎鏡像gcr.io/kubernetes-helm/tiller:v2.12.1。此時就得利用GitHub了,即在GitHub上創建一個repository,比如名稱就叫gcr.io_mirror。然后將Dockerfile文件上傳到該repository中,即:

在我本人的GitHub是將Dockerfile放到gcr.io_mirror/kubernetes-helm/tiller/v2.12.1中多了幾個目錄是為了方便管理。

3、構建鏡像

現在Dockerfile文件已經在GitHub中,那么現在就可以通過Docker Hub來構建鏡像了,首先在Docker Hub中創建repository,即:

名稱可以寫tiller;描述內容可以隨便寫一下,例如tiller:v2.12.1;要選擇是公開的即是Public;最重要的就行要選擇通過連接GitHub來獲取需要構建的源碼,即點擊“Connected”,然后要你填寫GitHub的相關信息(如果是第一次關聯),然后選擇GitHub中需要構建的庫,即選擇剛剛在GitHub創建的gcr.io_mirror:

注意此處的Dockerfile location這個要填Dcokerfile所在的路徑,在此處得填寫為:

kubernetes-helm/tiller/v2.12.1/Dockerfile

這個的路徑具體就是這個Dockerfile文件在GitHub的庫中路徑了。

這些信息填寫好后,就可以點擊“Create & Build”按鈕了,這個構建的過程可能需要幾分鍾。

4、利用鏡像

鏡像在Docker Hub中構建好后,就可以在本機上獲取我們自定義構建的tiller鏡像了,即在本機上輸入命令:

docker pull lzj09/tiller:v2.12.1

這樣就樣把自定義tiller鏡像獲取到了,但是為了在使用中更加方便,可以為該鏡像打一下tag,即:

docker tag lzj09/tiller:v2.12.1 gcr.io/kubernetes-helm/tiller:v2.12.1

那么我們就通過這種“曲線求國”的方式獲取到了gcr.io/kubernetes-helm/tiller:v2.12.1鏡像了。

關注我

以你最方便的方式關注我:
微信公眾號:


免責聲明!

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



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