IOT边缘 IOTEDGE-制作镜像包或插件包:镜像包打包
镜像包打包
- 构建需要打包的项目
构建项目,此处示例,构建好的文件存放在目录 /home/ModuleSDK-Demo 下
- 安装docker
请确认您使用的系统已经安装Docker(Docker版本需要高于17.06,推荐18.06),安装方法可参照docker 安装教程。
- 制作镜像
- 搜索基础镜像。
docker search dotnet
- 根据您的工程配置,选择合适的镜像。
镜像需要集成与您的工程配置兼容的.Net运行环境,下文使用的.Net版本仅作演示。
- 拉取镜像。
docker pull mcr.microsoft.com/dotnet/runtime:2.1
mcr.microsoft.com/dotnet/runtime:2.1 镜像是微软提供的镜像,非IoT团队发布,且IoT团队未提供任何官方镜像。该镜像在此仅做示例,IoT团队对该镜像的安全性不作保证,强烈建议用户自己封装镜像!
- 编写 Dockerfile 制作镜像。
创建 Dockerfile,内容示例如下(具体可参考编写高效的Dockerfile )。
下面提供了ModuleSDK-Demo镜像构建样例,仅作示例展示,请按需修改。
# 基础镜像来源 FROM mcr.microsoft.com/dotnet/runtime:2.1 # 指定工作目录 WORKDIR /app # 复制工程二进制文件和相关文件(即项目构建发布的产物) COPY ModuleSDK-Demo/ /app ENTRYPOINT ["dotnet", "ModuleSDK-Demo.dll"]
- 构建镜像
docker build -t modulesdk-demo:1.0.0 -f Dockerfile .
- 查看打包完成的镜像
docker images
可以看到modulesdk-demo这个镜像已经制作完成。REPOSITORY TAG IMAGE ID CREATED SIZE modulesdk-demo 1.0.0 85ed3c3dc738 8 minutes ago 182MB
上述步骤演示的是直接复制已编译好的工程文件来构建镜像,您也可以采取在构建镜像时编译的方式,具体可参照.Net 官方文档的指引。
- 搜索基础镜像。
- 镜像上传
- 上传镜像
镜像上传需要使用镜像容器服务(SWR),首先需要开通 容器镜像服务 (SWR)。开通及使用请参照容器 镜像服务 (SWR)。
- 获取 SWR 登录指令
获取登录指令请参照获取指令。
访问密钥即AK/SK(Access Key ID/Secret Access Key),获取的AK/SK将用于登录。
- 登录 SWR 仓库
docker login -u [区域项目名]@[AK] -p [登录密钥] [镜像仓库地址]
可以直接从控制台获取登录命令,如下图。
镜像仓库地址 = swr.区域项目名称.myhuaweicloud.com
例如,华北-北京一对应的镜像仓库地址为:swr.cn-north-1.myhuaweicloud.com
- 修改镜像所属组织
docker tag [OPTIONS] [镜像名:版本号] [镜像仓库地址/所属组织/镜像名:版本号]
例如:
docker tag modulesdk-demo:1.0.0 swr.cn-north-4.myhuaweicloud.com/iotedge/modulesdk-demo:1.0.0
- 上传镜像
docker push [镜像仓库地址/所属组织/镜像名:版本号]
例如:docker push swr.cn-north-4.myhuaweicloud.com/iotedge/modulesdk-demo:1.0.0
- 在我的镜像查看上传结果
- 上传镜像后请在 SWR 将镜像设置为公开。
编辑镜像:
设置为公开:
这一步很重要,关系到后面能否正常部署应用。
- 上传镜像