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 每个月将支付两次高级费用,且无额外配置或管理。 如今每一个区域就从本地拉取映像,既提高了性能和可靠性,又节省了从中国北部到中国东部的网络传输费用。