Azure IoT Edge入门(4)实战将“识别戴口罩”算法部署到边缘(2)-ACR准备
本案例分三节内容介绍:
- 将Custom Vision 模型导出成linux 容器;在本地build/run,完成本地测试;
- 准备Azure Container Registry, 将本地Build好的镜像push到ACR里;
- 使用IoT Edge将 ACR里准备好的 镜像部署到IoT Edge里,在EDGE设备上调用本地的算法;
视频讲解:
您可以在B站观看视频讲解:https://www.bilibili.com/video/av93806553/
或在本站观看:https://www.51azure.cloud/post/2020/3/5/azure-iot-edge52acr
图文讲解:
创建容器注册表
选择“创建资源” ,在“新建” 选项卡的搜索筛选器中键入“容器注册表”或英文下输入“Container Registry”
在“注册表名称”和“资源组”中输入值 。 注册表名称在 Azure 中必须唯一,并且包含 5-50 个字母数字字符。
显示“部署成功”消息时,请在门户中选择容器注册表 。
记下“登录服务器”的值。 结合 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 容器注册表,首先必须具有一个映像。 本例中我们使用上节内容中编译好的sean/mask:v1
将映像推送到注册表之前,必须使用 ACR 登录服务器的完全限定的名称进行标记。 登录服务器名称采用 <registry-name>.azurecr.cn(全小写)格式。
使用 docker tag 命令标记映像。 使用 ACR 实例的登录服务器名称替换 <acrLoginServer>
。
docker tag sean/mask:v1 seanyutestacr.azurecr.cn/mask:v1
最后,使用 docker push 将映像推送到 ACR 实例。 使用 ACR 实例的登录服务器名称替换 <acrLoginServer>
。 此示例创建 hello-world 存储库,其中包含 hello-world:v1
映像。
docker push seanyutestacr.azurecr.cn/mask:v1
在portal查看容器映像
若要列出注册表中的映像,请在门户中导航到注册表并选择“存储库”,然后选择使用 docker push
创建的存储库 。
在本示例中,选择 hello-world 存储库,并可在“标记”下看到 v1
标记的映像 。
从注册表运行映像,注意本例子更换了一台全新的虚拟机做测试
全新计算机尚未登录azure acr,则可以通过如下方式登录:
docker login -u <acr username> -p <acr password> <acr url>
现在,可以使用 docker run 从容器注册表拉取容器映像:
docker pull seanyutestacr.azurecr.cn/mask:v1
在本地运行容器,然后在浏览器访问测试:
docker run -p 127.0.0.1:81:80 -d seanyutestacr.azurecr.cn/mask:v1