語雀知識庫:https://www.yuque.com/seanyu/azure/acrweb
公衆號:雲計算實戰docker
Azure 容器註冊表(Azrue Container Registry,簡稱ACR)是 Azure 中的專用 Docker 註冊表,你可在其中存儲和管理專用 Docker 容器映像。服務器
選擇「建立資源」 ,在「新建」 選項卡的搜索篩選器中鍵入「容器註冊表」或英文下輸入「Container Registry」網絡
在「註冊表名稱」和「資源組」中輸入值 。 註冊表名稱在 Azure 中必須惟一,而且包含 5-50 個字母數字字符。截至到2020.02月,中國區四個區域都已經能夠建立ACR。併發
其中有三個SKU,高級版支持異地複製。ide
顯示「部署成功」消息時,請在門戶中選擇容器註冊表 。工具
記下「登陸服務器」的值。 結合 Azure CLI 和 Docker 使用註冊表時,請在如下步驟中使用此值。性能
在推送和拉取容器映像以前,必須登陸到 ACR 實例。 在操做系統中打開命令外殼,而後在 Azure CLI 中使用 az acr login 命令。雲計算
其中 Azure CLI 下載地址:https://docs.microsoft.com/en-us/cli/azure/install-azure-cli?view=azure-cli-latestspa
az acr login --name <acrName>
當咱們第一次執行的時候,可能會遇到以下的錯誤:
第一個錯誤是沒有安裝或啓動Docker,請自行下載安裝運行便可;
第二個錯誤是沒有登陸過 Azure CLI,須要先登登陸。
當咱們按照提示輸入az login,並跳轉到到https://login.microsoftonline.com/common/oauth2/authorize?response_type=code 之類的網址時,該地址針對global的Azure是正確的。
對於中國區的Azure,須要先執行
az cloud set --name AzureChinaCloud
跳轉到如圖相似的網址(https://login.partner.microsoftonline.cn/common/oauth2/authorize)認證地址纔是中國區登陸。
再次執行 az acr login --name <acrName>,該命令在完成後返回 Login Succeeded
。
要將映像推送到 Azure 容器註冊表,首先必須具備一個映像。 若是尚未任何本地容器映像,請運行如下 docker pull 命令,從 Docker 中心拉取現有映像。 就此示例來講,請拉取 hello-world
映像。
docker pull hello-world
將映像推送到註冊表以前,必須使用 ACR 登陸服務器的徹底限定的名稱進行標記。 登陸服務器名稱採用 <registry-name>.azurecr.cn(全小寫)格式。
使用 docker tag 命令標記映像。 使用 ACR 實例的登陸服務器名稱替換 <acrLoginServer>
。
docker tag hello-world <acrLoginServer>/hello-world:v1
最後,使用 docker push 將映像推送到 ACR 實例。 使用 ACR 實例的登陸服務器名稱替換 <acrLoginServer>
。 此示例建立 hello-world 存儲庫,其中包含 hello-world:v1
映像。
docker push <acrLoginServer>/hello-world:v1
查看本地的映像:
將映像推送到容器註冊表後,請從本地 Docker 環境中刪除 hello-world:v1
映像。 (請注意,此 docker rmi 命令不從 Azure 容器註冊表中的 hello-world 存儲庫刪除該映像。)
docker rmi <acrLoginServer>/hello-world:v1
若要列出註冊表中的映像,請在門戶中導航到註冊表並選擇「存儲庫」,而後選擇使用 docker push
建立的存儲庫 。
在本示例中,選擇 hello-world 存儲庫,並可在「標記」下看到 v1
標記的映像 。
如今,可使用 docker run 從容器註冊表拉取並運行 hello-world:v1
容器映像:
docker run <acrLoginServer>/hello-world:v1
配置異地複製
只有高級SKU的ACR才具備異地複製功能,若是不是高級SKU,請先升級。
導航到 Azure 容器註冊表,而後選擇「複製」 :
地圖中顯示了全部當前的 Azure 區域:
藍色六邊形表示當前的副本
綠色六邊形表示可能的複製區域
灰色六邊形表示尚不可複製的 Azure 區域
若要配置副本,請選擇一個綠色六邊形,而後選擇「建立」 :
若要建立其餘副本,請選擇表示其餘區域的綠色六邊形,而後單擊「建立」 。
ACR 將開始在配置的副本間同步映像。 完成後,門戶將顯示「就緒」 。 門戶中的副本狀態不會自動更新。 使用刷新按鈕查看更新狀態。
異地複製註冊表中的每一個區域在設置後都是獨立的。 Azure 容器註冊表 SLA 適用於每一個異地複製區域。
當你從異地複製註冊表中推送或拉取映像時,後臺的 Azure 流量管理器會將請求發送到位於離你最近的區域中的註冊表。
將映像或標記更新推送到最近的區域後,Azure 容器註冊表須要一些時間將清單和層複製到你選擇加入的其他區域。 較大的映像比較小的映像複製所需的時間更長。 映像和標記經過最終一致性模型在複製區域之間進行同步。
若要管理依賴於對異地複製進行推送更新的工做流,建議你配置 Webhook 以響應推送事件。 你能夠在異地複製註冊表中設置區域性 Webhook,以跟蹤在異地複製區域內完成的推送事件。
爲註冊表配置副本後,若是再也不須要它,能夠隨時將其刪除。 使用 Azure 門戶或其餘工具(例如 Azure CLI 中的 az acr replication delete 命令)刪除副本。
若要在 Azure 門戶中刪除副本,請執行如下操做:
導航到 Azure 容器註冊表,而後選擇「複製」 。
選擇副本的名稱,而後選擇「刪除」 。 確認要刪除該副本。
備註
沒法刪除註冊表的主區域(即建立註冊表的位置)中的註冊表副本。 只能經過刪除註冊表自己來刪除主副本。
*每個月價格估算基於每月 744 小時的使用量。
基本 | 標準 | 高級 | |
每日價格 | 1.6953 | 6.784 | 16.96 |
包含的存儲 (GB) | 10 GB | 100 GB | 500 高級跨多個併發節點提供 docker 拉取請求的加強型吞吐量 |
總 Webhook | 2 | 10 | 100 (可根據請求提供其餘信息) |
標準網絡費用適用(出站數據流量)。
異地複製是 Azure 容器註冊表高級 SKU 的一項功能。 將註冊表複製到所需區域時,每一個區域都會產生高級註冊表費用。
在前面的示例中,Contoso 將兩個註冊表合併到一塊兒,並向中國東部和中國北部添加副本。 Contoso 每個月將支付兩次高級費用,且無額外配置或管理。 如今每一個區域就從本地拉取映像,既提高了性能和可靠性,又節省了從中國北部到中國東部的網絡傳輸費用。