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

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

 

概述

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

 

創建容器註冊表

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

image.png

 

在“註冊表名稱”和“資源組”中輸入值 。 註冊表名稱在 Azure 中必須唯一,並且包含 5-50 個字母數字字符。截至到2020.02月,中國區四個區域都已經可以創建ACR。

 

image.png

 

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

image.png

 

 

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

 

image.png

記下“登錄服務器”的值。 結合 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-latest

 

az acr login --name <acrName>

 

當我們第一次執行的時候,可能會遇到如下的錯誤:

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

第二個錯誤是沒有登錄過 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 每月將支付兩次高級費用,且無額外配置或管理。 現在每個區域就從本地拉取映像,既提升了性能和可靠性,又節省了從中國北部到中國東部的網絡傳輸費用。

 

 

image.png

 

發佈了38 篇原創文章 · 獲贊 4 · 訪問量 1495
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章