Azure 容器註冊表(Azrue Container Registry,簡稱ACR)是 Azure 中的專用 Docker 註冊表,你可在其中存儲和管理專用 Docker 容器映像。html
選擇「建立資源」 ,在「新建」 選項卡的搜索篩選器中鍵入「容器註冊表」或英文下輸入「Container Registry」web
在「註冊表名稱」和「資源組」中輸入值 。 註冊表名稱在 Azure 中必須惟一,而且包含 5-50 個字母數字字符。截至到2020.02月,中國區四個區域都已經能夠建立ACR。docker
其中有三個SKU,高級版支持異地複製。shell
顯示「部署成功」消息時,請在門戶中選擇容器註冊表 。json
記下「登陸服務器」的值。 結合 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,須要先登登陸。
當咱們按照提示輸入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 區域:
若要配置副本,請選擇一個綠色六邊形,而後選擇「建立」 :
若要建立其餘副本,請選擇表示其餘區域的綠色六邊形,而後單擊「建立」 。
ACR 將開始在配置的副本間同步映像。 完成後,門戶將顯示「就緒」 。 門戶中的副本狀態不會自動更新。 使用刷新按鈕查看更新狀態。
爲註冊表配置副本後,若是再也不須要它,能夠隨時將其刪除。 使用 Azure 門戶或其餘工具(例如 Azure CLI 中的 az acr replication delete 命令)刪除副本。
若要在 Azure 門戶中刪除副本,請執行如下操做:
備註
沒法刪除註冊表的主區域(即建立註冊表的位置)中的註冊表副本。 只能經過刪除註冊表自己來刪除主副本。
*每個月價格估算基於每月 744 小時的使用量。
基本 | 標準 | 高級 | |
每日價格 | 1.6953 | 6.784 | 16.96 |
包含的存儲 (GB) | 10 GB | 100 GB | 500 高級跨多個併發節點提供 docker 拉取請求的加強型吞吐量 |
總 Webhook | 2 | 10 | 100 (可根據請求提供其餘信息) |
標準網絡費用適用(出站數據流量)。
異地複製是 Azure 容器註冊表高級 SKU 的一項功能。 將註冊表複製到所需區域時,每一個區域都會產生高級註冊表費用。
在前面的示例中,Contoso 將兩個註冊表合併到一塊兒,並向中國東部和中國北部添加副本。 Contoso 每個月將支付兩次高級費用,且無額外配置或管理。 如今每一個區域就從本地拉取映像,既提高了性能和可靠性,又節省了從中國北部到中國東部的網絡傳輸費用。