Azure Container Registry-基於開源 Docker Registry 的專用 Docker 註冊表服務

本文語雀知識庫:https://www.yuque.com/seanyu/azure/acr 

概述

Azure 容器註冊表(Azrue Container Registry,簡稱ACR)是 Azure 中的專用 Docker 註冊表,你可在其中存儲和管理專用 Docker 容器映像。html

 

建立容器註冊表

選擇「建立資源」 ,在「新建」 選項卡的搜索篩選器中鍵入「容器註冊表」或英文下輸入「Container Registry」web

image.png

 

在「註冊表名稱」和「資源組」中輸入值 。 註冊表名稱在 Azure 中必須惟一,而且包含 5-50 個字母數字字符。截至到2020.02月,中國區四個區域都已經能夠建立ACR。docker

 

image.png

 

其中有三個SKU,高級版支持異地複製。shell

image.png

 

 

顯示「部署成功」消息時,請在門戶中選擇容器註冊表 。json

 

image.png

記下「登陸服務器」的值。 結合 Azure CLI 和 Docker 使用註冊表時,請在如下步驟中使用此值。windows

登陸到註冊表

在推送和拉取容器映像以前,必須登陸到 ACR 實例。 在操做系統中打開命令外殼,而後在 Azure CLI 中使用 az acr login 命令。服務器

 

其中 Azure CLI 下載地址:https://docs.microsoft.com/en-us/cli/azure/install-azure-cli?view=azure-cli-latest網絡

 

az acr login --name <acrName>

 

當咱們第一次執行的時候,可能會遇到以下的錯誤:併發

第一個錯誤是沒有安裝或啓動Docker,請自行下載安裝運行便可;app

第二個錯誤是沒有登陸過 Azure CLI,須要先登登陸。

image.png

 

當咱們按照提示輸入az login,並跳轉到到https://login.microsoftonline.com/common/oauth2/authorize?response_type=code 之類的網址時,該地址針對global的Azure是正確的。

 

image.png

 

對於中國區的Azure,須要先執行 

 

az cloud set --name AzureChinaCloud 

 

image.png

跳轉到如圖相似的網址(https://login.partner.microsoftonline.cn/common/oauth2/authorize)認證地址纔是中國區登陸。

 

再次執行 az acr login --name <acrName>,該命令在完成後返回 Login Succeeded

image.png

 

將映像推送到註冊表

要將映像推送到 Azure 容器註冊表,首先必須具備一個映像。 若是尚未任何本地容器映像,請運行如下 docker pull 命令,從 Docker 中心拉取現有映像。 就此示例來講,請拉取 hello-world 映像。

 

docker pull hello-world

 

image.png

 

將映像推送到註冊表以前,必須使用 ACR 登陸服務器的徹底限定的名稱進行標記。 登陸服務器名稱採用 <registry-name>.azurecr.cn(全小寫)格式。

使用 docker tag 命令標記映像。 使用 ACR 實例的登陸服務器名稱替換 <acrLoginServer>

 

docker tag hello-world <acrLoginServer>/hello-world:v1

image.png

 

最後,使用 docker push 將映像推送到 ACR 實例。 使用 ACR 實例的登陸服務器名稱替換 <acrLoginServer>。 此示例建立 hello-world 存儲庫,其中包含 hello-world:v1 映像。

 

docker push <acrLoginServer>/hello-world:v1

image.png

 

查看本地的映像:

image.png

 

將映像推送到容器註冊表後,請從本地 Docker 環境中刪除 hello-world:v1 映像。 (請注意,此 docker rmi 命令不從 Azure 容器註冊表中的 hello-world 存儲庫刪除該映像。)

 

docker rmi <acrLoginServer>/hello-world:v1

 

image.png

 

在portal查看容器映像

若要列出註冊表中的映像,請在門戶中導航到註冊表並選擇「存儲庫」,而後選擇使用 docker push 建立的存儲庫 。

在本示例中,選擇 hello-world 存儲庫,並可在「標記」下看到 v1 標記的映像 。

 

image.png

 

從註冊表運行映像

如今,可使用 docker run 從容器註冊表拉取並運行 hello-world:v1 容器映像:

 

docker run <acrLoginServer>/hello-world:v1

 

image.png

 

 

 

配置異地複製

只有高級SKU的ACR才具備異地複製功能,若是不是高級SKU,請先升級。

image.png

image.png

 

導航到 Azure 容器註冊表,而後選擇「複製」 :

地圖中顯示了全部當前的 Azure 區域:

  • 藍色六邊形表示當前的副本
  • 綠色六邊形表示可能的複製區域
  • 灰色六邊形表示尚不可複製的 Azure 區域

若要配置副本,請選擇一個綠色六邊形,而後選擇「建立」 :

若要建立其餘副本,請選擇表示其餘區域的綠色六邊形,而後單擊「建立」 。

ACR 將開始在配置的副本間同步映像。 完成後,門戶將顯示「就緒」 。 門戶中的副本狀態不會自動更新。 使用刷新按鈕查看更新狀態。

使用異地複製註冊表的注意事項

  • 異地複製註冊表中的每一個區域在設置後都是獨立的。 Azure 容器註冊表 SLA 適用於每一個異地複製區域。
  • 當你從異地複製註冊表中推送或拉取映像時,後臺的 Azure 流量管理器會將請求發送到位於離你最近的區域中的註冊表。
  • 將映像或標記更新推送到最近的區域後,Azure 容器註冊表須要一些時間將清單和層複製到你選擇加入的其他區域。 較大的映像比較小的映像複製所需的時間更長。 映像和標記經過最終一致性模型在複製區域之間進行同步。
  • 若要管理依賴於對異地複製進行推送更新的工做流,建議你配置 Webhook 以響應推送事件。 你能夠在異地複製註冊表中設置區域性 Webhook,以跟蹤在異地複製區域內完成的推送事件。

刪除ACR副本

爲註冊表配置副本後,若是再也不須要它,能夠隨時將其刪除。 使用 Azure 門戶或其餘工具(例如 Azure CLI 中的 az acr replication delete 命令)刪除副本。

若要在 Azure 門戶中刪除副本,請執行如下操做:

  1. 導航到 Azure 容器註冊表,而後選擇「複製」 。
  2. 選擇副本的名稱,而後選擇「刪除」 。 確認要刪除該副本。

 備註

沒法刪除註冊表的主區域(即建立註冊表的位置)中的註冊表副本。 只能經過刪除註冊表自己來刪除主副本。

訂價及異地複製訂價

*每個月價格估算基於每月 744 小時的使用量。

  基本 標準 高級
每日價格 1.6953 6.784 16.96
包含的存儲 (GB) 10 GB 100 GB 500
高級跨多個併發節點提供 docker 拉取請求的加強型吞吐量
總 Webhook 2 10 100
(可根據請求提供其餘信息)

標準網絡費用適用(出站數據流量)。

異地複製是 Azure 容器註冊表高級 SKU 的一項功能。 將註冊表複製到所需區域時,每一個區域都會產生高級註冊表費用。

在前面的示例中,Contoso 將兩個註冊表合併到一塊兒,並向中國東部和中國北部添加副本。 Contoso 每個月將支付兩次高級費用,且無額外配置或管理。 如今每一個區域就從本地拉取映像,既提高了性能和可靠性,又節省了從中國北部到中國東部的網絡傳輸費用。

相關文章
相關標籤/搜索