
# 打包容器镜像
![](https://support.huaweicloud.com/bestpractice-iotedge/public_sys-resources/caution_3.0-zh-cn.png)
若制作镜像包以容器化方式部署应用，不支持在一个容器内运行多个集成ModuleSDK的软件进程或者重启集成ModuleSDK的软件进程，会导致鉴权失败等问题。
1. 上传打包的项目。 
   将jar文件上传到联网的linux机器上，如目录（/home/monitor）中
   
   
2. 安装docker。 
   请确认使用的系统已经安装docker(docker版本需要高于17.06，推荐18.06),安装参照[docker 安装教程](https://docs.docker.com/install/overview/)。
   
   
3. 制作镜像。 
   1. 搜索基础镜像，基础镜像需要集成jre。
      ```
      docker search jre8
      ```
      
   
   2. 选择合适的镜像（镜像需要集成版本不低于8的jre）
      ```
      NAME                 DESCRIPTION   STARS     OFFICIAL   AUTOMATED
      livingobjects/jre8   Jre8 image    4         [OK]
      ```
      ![](https://support.huaweicloud.com/bestpractice-iotedge/public_sys-resources/note_3.0-zh-cn.png)
      livingobjects/jre8镜像是docker hub第三方提供的镜像，非IoT团队发布，且IoT团队未提供任何官方镜像。该镜像在此仅做示例，IoT团队对该镜像的安全性不作保证。强烈建议用户自己封装镜像！
      
   
   3. 拉取镜像
      ```
      docker pull livingobjects/jre8
      ```
      
   
   4. 编写dockerfile制作镜像
      dockerfile内容参照如下（具体可参考[编写高效的Dockerfile](https://support.huaweicloud.com/bestpractice-swr/swr_bestpractice_0002.html) ）
      ```
      #Version 1.0.0
      #基础镜像来源
      FROM livingobjects/jre8 
      #授权
      RUN mkdir -p /opt/iot/edge/monitor / && chmod -R 777 /opt/
      #复制文件到指定目录,此dockerfile文件位置:/home,jar包位置:/home/monitor 
      COPY monitor /opt/iot/edge/monitor 
      #用户 
      USER root 
      #开放端口    
      EXPOSE 8080
      #运行命令
      CMD ["java", "-jar", "/opt/iot/edge/monitor/monitor-app.jar", "run"]
      ```
      目录树结构如下：
      home
      ├── dockerfile
      └── monitor
      └── monitor-app.jar
      
   
   5. 构建镜像
      ```
      docker build -t edge_monitor:1.0.0 /home --no-cache
      ```
      
   
   6. 查看打包完成的镜像
      ```
      docker images
      ```
      回显信息：
      ```
      REPOSITORY      TAG      IMAGE ID       CREATED          SIZE
      edge_monitor    1.0.0    93f9d964bcea   12 seconds ago   243MB
      ```
      
   
   
   
   
 
