全部产品
云市场

创建镜像并上传到镜像仓库(Swarm 集群)

更新时间:2019-02-20 11:23:29

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

前提条件

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

创建应用的基础镜像

  1. 查看应用容器版本。

    • 应用未创建,则应用的容器版本则为创建应用时您将设置的应用运行环境
    • 应用已经创建,则登录 EDAS 控制台,在左侧导航栏中选择应用管理 > 应用列表,在应用列表页面单击您创建的 Docker 应用名称,进入基本信息页面,然后在左侧导航栏单击容器版本查看应用的容器版本。
  2. 执行以下命令创建应用基础镜像,其中镜像版本号 3.5.2 请替换为您的应用的实际容器版本。

    1. docker pull registry.aliyuncs.com/edas/edas-container:3.5.2
  3. 执行以下命令初始化打包环境,清空已有数据(注意替换镜像版本号)。

    1. docker rm -f -v edas-build-package
    2. 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 放入镜像,以镜像方式发布应用。

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

    1. FROM registry.aliyuncs.com/edas/edas-container:3.5.2
    2. ADD /tmp/server.xml /home/admin/taobao-tomcat-production-7.0.59.3/conf/server.xml
    3. #安装一些系统包,比较常用的 net-tools (包括netstat、ifconfig等), 也可根据需要安装更多的系统包, 例如:telnet、unzip
    4. 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 包部署目录则执行以下命令:

  1. 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 下,然后解压。解压后将会看到如下的文件内容:

    1. tdy218@Christian-Laptop $ tree fatjar_image_build
    2. fatjar_image_build
    3. ├── Dockerfile
    4. ├── build_dockerimage_jar.zip
    5. ├── mw-tools-online-1.5.3.jar
    6. └── start.sh

    然后编辑 Dockfile 文件,尽量只修改应用包的名称

    1. FROM registry.cn-hangzhou.aliyuncs.com/edas/edas-container:3.5.2
    2. ENV JAR_FILE_NAME=mw-tools-online-1.5.3.jar
    3. ENV START_SCRIPT=/home/admin/bin/start.sh
    4. COPY ./start.sh ${START_SCRIPT}
    5. COPY ./${JAR_FILE_NAME} /home/admin/app/${JAR_FILE_NAME}
    6. RUN yum install -y net-tools lsof sysstat
    7. RUN chmod +x ${START_SCRIPT}
    8. CMD ${START_SCRIPT}

打包本地镜像

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

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

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

  • 方法一:编写 Dockerfile

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

    1. 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:

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