使用镜像部署应用,您需先构建一个镜像并上传到镜像仓库。

前提条件

已在容器镜像服务控制台完成仓库构建,并可以登录镜像仓库

步骤一:创建应用的基础镜像

  1. 查看应用容器版本。
    • 应用未创建,则应用的容器版本则为创建应用时您将设置的应用运行环境
    • 应用已经创建,则登录 EDAS 控制台,在左侧导航栏中选择应用管理 > 应用列表,在应用列表页面单击您创建的 Docker 应用名称,进入基本信息页面,然后在左侧导航栏单击容器版本查看应用的容器版本。
  2. 执行以下命令创建应用基础镜像,其中镜像版本号 3.5.2 请替换为您的应用的实际容器版本。
    docker pull registry.aliyuncs.com/edas/edas-container:3.5.2                       
  3. 执行以下命令初始化打包环境,清空已有数据(注意替换镜像版本号)。
    docker rm -f -v edas-build-package
    docker run --name edas-build-package -d --restart=always registry.aliyuncs.com/edas/edas-container:3.5.2                        

步骤二:定制标准镜像

您可通过以下方法定制 WAR 包或 JAR 包应用的镜像文件。

  • 定制 WAR 包应用镜像
    • 方法一:编写 Dockerfile

      在创建应用的基础镜像后,可通过编写 Dockerfile 制作标准镜像。

      注意 请勿使用 CMD 命令自定义镜像启动脚本。
      • 发布 WAR 包示例:将本地应用 /tmp/edas-app.war 放入镜像,以镜像方式发布应用。

        FROM registry.aliyuncs.com/edas/edas-container:3.5.2
        ADD /tmp/edas-app.war /home/admin/taobao-tomcat-production-7.0.59.3/deploy/                                   
      • 修改 Tomcat 配置示例:替换 server.xml,并安装系统监控工具 sysstat。

        FROM registry.aliyuncs.com/edas/edas-container:3.5.2
        ADD /tmp/server.xml /home/admin/taobao-tomcat-production-7.0.59.3/conf/server.xml
        #安装一些系统包,比较常用的net-tools(包括netstat、ifconfig等),也可根据需要安装更多的系统包, 例如telnet、unzip
        RUN yum install -y net-tools lsof sysstat                                   
    • 方法二:使用本地 Docker 命令

      与文件复制 cp 命令基本一致,执行如下命令,将本机 /tmp/app.war 复制到打包环境 WAR 包目录中。 例如:本地文件路径为/tmp/app.war,容器文件路径为edas-build-package:/home/admin/taobao-tomcat-production-7.0.59.3/deploy/

      复制本地文件 /tmp/app.war 至容器内 WAR 包部署目录则执行以下命令:

      docker cp /tmp/app.war edas-build-package:/home/admin/taobao-tomcat-production-7.0.59.3/deploy/                            
    • 方法三:在 Docker 容器内下载远程文件
      1. 执行命令docker exec -it edas-build-package bash,进入容器。

      2. 执行命令 wget http://anything-you-want/,下载文件保存到本地。

  • 定制 JAR 包应用镜像
    1. 创建一个制作镜像专用的目录,例如:fatjar_image_build (示例),然后将应用包放在该目录下。

    2. 下载启动脚本及 Dockfile 示例。

      单击下载 压缩文件 ,将此压缩包保存在 fatjar_image_build 下,然后解压。解压后将会看到如下的文件内容:

      tdy218@Christian-Laptop $ tree fatjar_image_build
      fatjar_image_build
      ├── Dockerfile
      ├── build_dockerimage_jar.zip
      ├── mw-tools-online-1.5.3.jar
      └── start.sh                           
    3. 编辑 Dockfile 文件,尽量只修改应用包的名称。
      FROM registry.cn-hangzhou.aliyuncs.com/edas/edas-container:3.5.2
      
      ENV JAR_FILE_NAME=mw-tools-online-1.5.3.jar
      ENV START_SCRIPT=/home/admin/bin/start.sh
      
      COPY ./start.sh ${START_SCRIPT}
      COPY ./${JAR_FILE_NAME} /home/admin/app/${JAR_FILE_NAME}
      
      RUN yum install -y net-tools lsof sysstat
      RUN chmod +x ${START_SCRIPT}
      
      CMD ${START_SCRIPT}                         

步骤三:打包本地镜像

完成基础镜像定制后,根据定制镜像方法的不同,分别执行以下 shell 命令进行镜像打包。该打包的镜像均保存在本地环境。

注意 将最后的镜像地址,替换成之前在创建容器仓库镜像中创建的镜像仓库名,并填写一个易于辨识的版本号。

例如:打包服务 registry.cn-hangzhou.aliyuncs.com/edas/demo-frontend-service,设置版本号为 20181111

  • 方法一:编写 Dockerfile

    docker build -t demo-frontend-service:20181111 -f /tmp/Dockerfile .
    docker tag demo-frontend-service:20181111 registry.cn-hangzhou.aliyuncs.com/edas/demo-frontend-service:20181111                    
  • 方法二:使用本地 docker 命令 / 方法三:在 Docker 容器内下载远程文件

    export IMAGE_ID=`docker ps -a -f name=edas-build-package --format {{.ID}}` && docker commit $IMAGE_ID registry.cn-hangzhou.aliyuncs.com/edas/demo-frontend-service:20181111                   

步骤四:上传镜像到镜像仓库

  1. 参照仓库构建完成镜像仓库的注册登录。
  2. 上传您本地打包的镜像到镜像仓库,然后在 EDAS 中选择该镜像进行部署。

    例如:推送远程服务仓库 registry.cn-hangzhou.aliyuncs.com/edas/demo-frontend-service:20181111:

    docker push registry.cn-hangzhou.aliyuncs.com/edas/demo-frontend-service:20181111