天天看點

容器鏡像服務 Docker鏡像的基本使用容器鏡像服務 Docker鏡像的基本使用

docker的使用條件和基礎不再複述

docker安裝和docker鏡像下載下傳的加速器文檔在下方的"相關連結"中已經給出

docker的鏡像存儲中心通常被稱為<code>registry</code>。

當您需要擷取docker鏡像的時候,首先需要登入<code>registry</code>,然後拉取鏡像。在您修改過鏡像之後,您可以再次将鏡像推送到<code>registry</code>中去。

docker的鏡像位址是什麼?我們來看一個完整的例子。(以容器服務的公共鏡像為例)

<code>registry.cn-hangzhou.aliyuncs.com/acs/agent:0.8</code>

<code>registry.cn-hangzhou.aliyuncs.com</code> 叫做 "registry域名"。

<code>acs</code> 叫做 "命名空間"。

<code>agent</code> 叫做 "倉庫名稱"。

<code>0.8</code> 叫做 "tag"、"鏡像标簽"(非必須,預設latest)。

将這個幾個完全獨立的概念組合一下,還有幾個術語。

<code>registry.cn-hangzhou.aliyuncs.com/acs/agent</code> 稱為 "倉庫坐标"。

<code>acs/agent</code> 稱為 "倉庫全名"(通常在api中使用)。

本文的重點是介紹docker最常用的三個指令:login、pull、push。

以阿裡雲杭州公網registry為例:登陸時必須指明登陸的 "registry域名"

登陸成功之後會顯示 login succeeded。

另外你還可以通過檢視這個檔案,确認您的登陸資訊。

首先子賬戶需要登入控制台,設定一下自己的registry登陸密碼。

然後使用<code>[子賬戶名]@[企業别名]</code>作為使用者名進行登陸。ram控制台可以設定與檢視主賬戶的企業别名。如果沒有企業别名,企業别名預設為主賬戶的uid。

舉例:子賬戶名為<code>subaccount</code>,企業别名為<code>misaka-network</code>

拉取鏡像首先需要提示您的是。

如果你要拉取docker官方的鏡像的話。參考一下下方相關連結中的加速器文章。

如果你要拉取公共倉庫下的鏡像的話,不登陸registry也是可以拉去的。

以容器服務的公共鏡像 <code>registry.cn-hangzhou.aliyuncs.com/acs/agent:0.8</code> 為例

檢視一下下載下傳下來的鏡像(注意倉庫坐标和tag,這兩個概念)

鏡像在本地環境建構或是打包好之後,就可以推到registry啦。

當然前提條件是,你有對這個倉庫的讀寫權限或是讀寫授權。否則你會看到下面這樣的錯誤。

主要需要排查有兩種可能 使用者使用了阿裡雲賬戶的登陸密碼,而沒有使用registry的獨立登陸密碼。registry的登陸密碼是在容器鏡像服務的控制台上設定與修改的。 使用者使用了sudo進行登陸,這個時候系統第一個要求輸入的密碼是linux的使用者密碼。很多使用者在這裡輸入了registry的登陸密碼,導緻登陸操作失敗。區分這個錯誤的方式很簡單,linux的使用者密碼大多允許嘗試三次,錯誤時會提示<code>try again.</code>。而registry的登陸密碼錯誤一次之後就會退出,并傳回以下錯誤。

提示<code>error: image xxx not found</code>

自己下載下傳的是公共倉庫,那麼問題應該在鏡像位址不正确。請在控制台搜尋一下這個公共倉庫,檢查一下想要下載下傳的這個鏡像版本是不是真實存在。

自己想要下載下傳的是一個私有倉庫中的鏡像,這時首先确認一下registry登陸狀态。<code>cat ~/.docker/config.json</code>可以看到所有登陸的registry域名。裡面是不是包括你想要下載下傳鏡像的registry域名。如果沒有的話,您需要參考上面的文檔,先進行登陸操作。如果這裡已經登陸了的話,那麼您需要确認的就是您登陸的這個賬戶是否有權限下載下傳這個鏡像。子賬戶預設是沒有任何權限的,參考下方相關連結中主子賬戶授權的文章。

提示<code>error: filesystem layer verification failed for digest</code>

極少數情況下偶現,下載下傳的塊檔案檢驗失敗。一般重試可以解決。

提示<code>denied: requested access to the resource is denied</code>

主要的排查步驟和docker pull基本一緻,僅僅是授權要求的級别較pull更高一些。

<a href="https://cr.console.aliyun.com">容器鏡像服務 控制台</a>

<a href="https://yq.aliyun.com/articles/62364">容器鏡像服務 主子賬戶授權</a>

<a href="https://yq.aliyun.com/articles/223885">容器鏡像服務 鏡像安全掃描</a>

<a href="https://yq.aliyun.com/articles/7695">docker engine 鏡像源站</a>

<a href="https://yq.aliyun.com/articles/7697">docker toolbox 鏡像源站</a>

<a href="https://yq.aliyun.com/articles/29941">docker 鏡像加速器</a>

繼續閱讀