语雀知识库:https://www.yuque.com/seanyu/azure/acrweb
公众号:云计算实战docker
Azure 容器注册表(Azrue Container Registry,简称ACR)是 Azure 中的专用 Docker 注册表,你可在其中存储和管理专用 Docker 容器映像。服务器
选择“建立资源” ,在“新建” 选项卡的搜索筛选器中键入“容器注册表”或英文下输入“Container Registry”网络
在“注册表名称”和“资源组”中输入值 。 注册表名称在 Azure 中必须惟一,而且包含 5-50 个字母数字字符。截至到2020.02月,中国区四个区域都已经能够建立ACR。并发
其中有三个SKU,高级版支持异地复制。ide
显示“部署成功”消息时,请在门户中选择容器注册表 。工具
记下“登陆服务器”的值。 结合 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-latestspa
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
若要列出注册表中的映像,请在门户中导航到注册表并选择“存储库”,而后选择使用 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,以跟踪在异地复制区域内完成的推送事件。
为注册表配置副本后,若是再也不须要它,能够随时将其删除。 使用 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 每个月将支付两次高级费用,且无额外配置或管理。 如今每一个区域就从本地拉取映像,既提高了性能和可靠性,又节省了从中国北部到中国东部的网络传输费用。