語雀知識庫:https://www.yuque.com/seanyu/azure/acr
概述
Azure 容器註冊表(Azrue Container Registry,簡稱ACR)是 Azure 中的專用 Docker 註冊表,你可在其中存儲和管理專用 Docker 容器映像。
創建容器註冊表
選擇“創建資源” ,在“新建” 選項卡的搜索篩選器中鍵入“容器註冊表”或英文下輸入“Container Registry”
在“註冊表名稱”和“資源組”中輸入值 。 註冊表名稱在 Azure 中必須唯一,並且包含 5-50 個字母數字字符。截至到2020.02月,中國區四個區域都已經可以創建ACR。
其中有三個SKU,高級版支持異地複製。
顯示“部署成功”消息時,請在門戶中選擇容器註冊表 。
記下“登錄服務器”的值。 結合 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,需要先登登錄。
當我們按照提示輸入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
在portal查看容器映像
若要列出註冊表中的映像,請在門戶中導航到註冊表並選擇“存儲庫”,然後選擇使用 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,以跟蹤在異地複製區域內完成的推送事件。
刪除ACR副本
爲註冊表配置副本後,如果不再需要它,可以隨時將其刪除。 使用 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 每月將支付兩次高級費用,且無額外配置或管理。 現在每個區域就從本地拉取映像,既提升了性能和可靠性,又節省了從中國北部到中國東部的網絡傳輸費用。