IOT边缘 IOTEDGE-制作镜像包或插件包:镜像包打包

时间:2024-10-22 10:31:36

镜像包打包

  1. 上传需要打包的项目。将项目上传到网络能访问到的Linux机器上,放到目录下(比如 /home/MyCApp)。
  2. 安装docker。

    请确认你使用的系统已经安装docker(docker版本需要高于17.06,推荐18.06),安装方法可参照docker 安装教程

  3. 制作镜像。

    1. 搜索基础镜像。

      对基础镜像没有要求,可自行选择合适的基础镜像,以下选用带cmake的镜像作为示例

      docker search cmake
    2. 选择合适的镜像(镜像需要集成了cmake且版本不低于3.9.5)
      NAME                  DESCRIPTION                            STARS     OFFICIAL   AUTOMATED
      lycantropos/cmake    CMake Docker image                       3                    [OK]
    3. 拉取镜像

      lycantropos/cmake镜像是docker hub第三方提供的镜像,非IoT团队发布,且IoT团队未提供任何官方镜像。该镜像在此仅做示例,IoT团队对该镜像的安全性不作保证。强烈建议用户自己封装镜像!

      docker pull lycantropos/cmake
    4. 添加启动脚本start.sh,放到项目文件下(和main.c在一个目录下)。
      function log(){
          echo `date "+%Y-%m-%d %T"`: $1
      }
      
      log "[INFO] start execute process."
      
      # 这里的路径取决于项目保存的位置
      cd /opt/iot/edge/MyCApp
      
      ./MyCApp

      MyCApp为可执行文件,生成步骤可参考生成可执行文件

    5. 编写 Dockerfile 制作镜像

      创建 Dockerfile,命名为 myapp-dockerfile 内容参照如下(具体可参考编写高效的Dockerfile )。

      下面提供myapp-dockerfile 样例,请根据具体需要修改。

      注意myapp-dockerfile需要和项目放到一个目录下。

      #Version 1.0.0
      
      # 基础镜像来源
      # 如果不采用在镜像中编译源文件的方式,可以任意选择基础镜像
      FROM lycantropos/cmake
      
      # 创建镜像文件目录,并且授权
      RUN mkdir -p /opt/iot/edge/MyCApp/conf && chmod -R 777 /opt
      
      ENV docker_path=/opt/iot/edge/MyCApp
      ENV LD_LIBRARY_PATH=${docker_path}:$LD_LIBRARY_PATH
      
      WORKDIR ${docker_path}
      
      # 复制工程或文件到指定目录
      COPY MyCApp/MyCApp $docker_path
      
      # 将依赖库和配置文件放到对应目录下,确保编译的时候不会出错
      COPY MyCApp/lib /usr/lib
      COPY MyCApp/conf $docker_path/conf
      COPY MyCApp/start.sh $docker_path
      
      # 指定容器将要监听的端口
      USER root
      EXPOSE 8082
      
      ENTRYPOINT ["/bin/bash", "/opt/iot/edge/MyCApp/start.sh"]
    6. 构建镜像
      docker build -f ./myapp-dockerfile -t my_app_docker:v1.0.0 ./
    7. 查看打包完成的镜像
      docker images
      可以看到my_app_docker这个镜像已经制作完成。
      REPOSITORY       TAG         IMAGE ID       CREATED         SIZE
      my_app_docker   v1.0.0     983b4e5aa72a   10 minutes ago   1.51GB

  4. 镜像上传

    以上步骤可以通过体验馆熟悉流程。

    1. 上传镜像

      镜像上传需要使用镜像容器服务(SWR),首先需要开通 容器镜像服务 (SWR)。开通及使用请参照容器 镜像服务 (SWR)。

    2. 获取 SWR 登录指令

      获取登录指令请参照获取指令

      访问密钥即AK/SK(Access Key ID/Secret Access Key),获取的密钥和AK将用于登录。

    3. 登录 SWR 仓库
      docker login -u [区域项目名]@[AK] -p [登录密钥] [镜像仓库地址]

      可以直接从控制台获取登录命令,如下图。

      镜像仓库地址 = swr.区域项目名称.myhuaweicloud.com

      例如,华北-北京一对应的镜像仓库地址为:swr.cn-north-1.myhuaweicloud.com

    4. 修改镜像所属组织

      修改镜像的组织名,以便推送到个人组织内。

      docker tag [OPTIONS] [镜像名:版本号] [镜像仓库地址/所属组织/镜像名:版本号]

      例如,

      docker tag my_app_docker:v1.0.0 swr.cn-north-4.myhuaweicloud.com/iotedge/my_app_docker:v1.0.0
    5. 上传镜像
      docker push [镜像仓库地址/所属组织/镜像名:版本号]
      例如,
      docker push swr.cn-north-4.myhuaweicloud.com/iotedge/my_app_docker:v1.0.0
    6. 我的镜像查看上传结果

    7. 上传镜像后请在 SWR 将镜像设置为公开。

      步骤一:

      步骤二:

      步骤三:

      这一步很重要,关系到后面能否正常部署应用。

support.huaweicloud.com/devg-iotedge/iotedge_devg_0061.html