在國內由於種種原因,有些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鏡像了。
關注我
以你最方便的方式關注我:
微信公眾號: