kubernetes體系里,很多鏡像都是出自于k8s.gcr.io鏡像源,但是很可惜,國內(nèi)無法直接訪問,所以沒有科學(xué)上網(wǎng)的話,只能先上網(wǎng)搜搜,看有沒有其他人提供本土的鏡像,例如阿里云鏡像源上就有很多(筆者之前也是這么用的,如果網(wǎng)上找不到,可以注冊一個阿里云賬號,直接在阿里云鏡像源里搜索,一定能搜到),這種方法雖然快捷,但是有很多隱患,例如鏡像內(nèi)容是否真的跟鏡像標(biāo)記的tag版本一致?是否可用?話說,這個問題還是好的,能不能鏡像中包含一些非法的內(nèi)容,一些惡意程序?如果有,這就事大了。當(dāng)然,我們可以通過鏡像的sha256信息,來驗證是否這個鏡像和谷歌的原聲鏡像一致,但是很可惜,我查到的阿里云鏡像,很少有跟谷歌鏡像一致的,可能他們不是直接把谷歌的鏡像傳過去,而是自己通過github編譯生成上傳的(寫本文時,又發(fā)現(xiàn)一個原因,很可能是阿里的容器鏡像服務(wù)源不是docker v2的,或者docker版本不是v1.10+,造成谷歌和阿里庫中鏡像manifest的結(jié)構(gòu)不一致,所以有時候,對于某些帶特殊配置的鏡像,傳到谷歌和傳到阿里上面,digest并不一樣,關(guān)于digest的生成原理,詳見該文Docker的Pull Digest和Image ID(https://www.jianshu.com/p/716096892100),另外,通過下面pause:3.1鏡像的例子,也可以看出來,digest會不一樣,但是本人上傳cadvisor和metrics-server-amd64等其他鏡像的時候,就不存在該問題,所以具體原因也跟鏡像配置有關(guān),下文細(xì)表)。
為了規(guī)避上面的風(fēng)險,本文給大家提供一個方便快捷的互傳鏡像方法,只需要瀏覽器支持翻墻即可,即不需要搭建docker本地服務(wù),也不需要裝有docker服務(wù)的機器能翻墻。不贅述,直接說步驟:
·首先瀏覽器要翻墻,登陸谷歌云,登陸控制臺
·點擊激活cloud shell,如下圖
cloud shell的使用,可以看下官方說明,其實就是一個免費的shell控制臺,一個隨用隨取的小型服務(wù)器
·創(chuàng)建成功,如下圖
它默認(rèn)是支持docker的,可以看到版本是18.03.1-ce,(寫這個文章的時候,發(fā)現(xiàn)阿里云也有cloud shell,只可惜沒有docker支持,也不能翻墻)
·以k8s.gcr.io/pause:3.1為例,先docker pull k8s.gcr.io/pause:3.1(cloud shell支持ctrl+c/v復(fù)制粘貼,你完全可以復(fù)制這條命令進去,很強大的shell工具)
docker pull k8s.gcr.io/pause:3.1
可以看到sha256是f78411e19d84a252e53bff71a4407a5686c46983a2c2eeed83929b888179acea
·在shell里登陸自己的阿里云鏡像源鏡像庫,按照阿里云的操作指南登陸
docker login --username=XXXX(你的阿里云賬號) registry.cn-hangzhou.aliyuncs.com
會提示輸入password,輸入成功后,顯示Login Succeeded
·這個時候可以根據(jù)自己想用的命名空間名字,進行docker tag,我的命名空間叫hexin-public,所以我的命令如下
docker tag k8s.gcr.io/pause:3.1 registry.cn-hangzhou.aliyuncs.com/hexin_public/pause:3.1
·docker push即可
docker push registry.cn-hangzhou.aliyuncs.com/hexin_public/pause:3.1
可以看到,阿里云鏡像返回的digest是sha256:fcaff905397ba63fd376d0c3019f1f1cb6e7506131389edbcb3d22719f1ae54d,這就是我上文提到那個問題,統(tǒng)一查看,會發(fā)現(xiàn),其實他們確實是同一個鏡像。
現(xiàn)在來看,唯一的原因,只可能是我上面說的情況,當(dāng)然,digest也不是對所有的鏡像都有便哈,例如谷歌的cadivsor和metrics-server-amd64,就不會
不過這個不是本文重點,重點是如何快速把國外需要翻墻的鏡像,轉(zhuǎn)移到國內(nèi),關(guān)于國內(nèi)阿里云鏡像源的使用,我這里就不多說了,大家可以登陸阿里云使用。希望本文對大家有幫助!