上云无忧 > 文档中心 > 百度智能云云原生微服务应用平台镜像制作
云原生微服务应用平台
百度智能云云原生微服务应用平台镜像制作

文档简介:
有两种方式制作应用镜像:一种是基于封装好监控功能的基础镜像(推荐),还有一种是基于操作系统的镜像(比如centos7)。选择一种即可。 一、基于百度云官方提供的基础镜像(推荐)。 二、基于操作系统的基础镜像。
*此产品及展示信息均由百度智能云官方提供。免费试用 咨询热线:400-826-7010,为您提供专业的售前咨询,让您快速了解云产品,助您轻松上云! 微信咨询
  免费试用、价格特惠

有两种方式制作应用镜像:一种是基于封装好监控功能的基础镜像(推荐),还有一种是基于操作系统的镜像(比如centos7)。选择一种即可。

一、基于百度云官方提供的基础镜像(推荐)


前期准备

1.环境准备

  • 在CCE产品上开通镜像仓库,创建命名空间,并记录用户名和密码、命名空间名称
  • 一台安装并配置好Docker的机器

2.基础镜像

基础镜像默认包含探针

环境类型 说明 镜像地址
centos7.1jdk8 centos7.1预装jdk8 hub.baidubce.com/cnap-public/microservice-springcloud:probe2.2.0.2_centos7.1_java8
ubuntu18.04jdk8 ubuntu18.04预装jdk8 hub.baidubce.com/cnap-public/microservice-springcloud:probe2.2.0.2_ubuntu18.04_java8

基础镜像说明

  • jdk8安装路径:/home/java
  • 探针安装路径:/home/emcprobe
  • 启动脚本start.sh路径:/home

基础镜像使用 "ENTRYPOINT" 设置容器入口,使用基础镜像时(from),需要以 "CMD ["param1","param2"...]" 格式传递用户程序启动命令。基础镜像会接受CMD命令作为参数,启动用户程序。

编写Dockerfile文件

以环境基于 centos7和jdk8 来创建应用provider-demo为例。Dockerfile仅需引用上述提供的基础镜像,并将自己的启动命令写入CMD即可。

使用监控功能的应用

操作步骤:

1、进入到Docker机器存放用户程序的目录下,如/home/appimage。

2、创建Dockerfile文件,内容如下:

#基础镜像镜像地址
FROM hub.baidubce.com/cnap-public/microservice-springcloud:probe2.2.0.2_centos7.1_java8
# 安装应用程序包,推荐/home/app/lib目录下
COPY {BMS_JAR_NAME} /home/app/lib/
# 应用启动命令
CMD ["java","-jar","/home/app/lib/{BMS_JAR_NAME}"]

注意:{BMS_JAR_NAME} 替换为需要部署的程序包的名称。这里的CMD命令仅作为参数向基础镜像ENTRYPOINT命令传递

使用Dockerfile创建镜像

在Dockerfile所在的目录(/home/appimage)执行docker build命令,创建镜像:

docker build -t hub.baidubce.com/[namespace]/[ImageName]:[镜像版本] .

namespace为环境准备中创建的命名空间的名称;ImageName由用户指定所创建镜像的名称;

注意,命令后的 “.”

创建结束后,可以通过docker image ls 或者 docker images命令查看镜像是否创建:

docker image ls
docker images

推送镜像到镜像仓库

镜像制作完成后,将制作的镜像推送到百度云镜像仓库:

docker push hub.baidubce.com/[namespace]/[ImageName]:[镜像版本]

镜像制作与推送完成后,即可在CNAP平台上进行部署。

二、基于操作系统的基础镜像


前期准备

1.环境准备

  • 在CCE产品上开通镜像仓库,创建命名空间,并记录用户名和密码、命名空间名称
  • 一台安装并配置好Docker的机器

2.代码准备

以创建provider-demo为例:

文件 说明 下载链接
provider-demo-1.0-SNAPSHOT.jar 用户的spring cloud 微服务(服务提供者)或者普通java应用包 无(用户代码)
监控探针包 支持监控信息的展示 emcprobe.tar.gz

将这两个文件放置在Docker机器的同一个目录下,如/home/appimage目录,下文将以此目录为例进行镜像的制作。

编写Dockerfile文件

2.1使用监控功能的应用

操作步骤: 1、进入到Docker机器存放用户程序和凤睛探针包的目录下,如/home/appimage。 2、创建Dockerfile文件,内容如下:

FROM centos:7
# 描述镜像创建者信息,可自定义
MAINTAINER BAIDU
# 设置时区,使得用户应用日志打印可以获取正确的时间
RUN rm -f /etc/localtime & cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo "Asia/Shanghai" > /etc/timezone
# 安装JDK(需手动下载jdk包并放置在Dockerfile相同目录)
ADD jdk-8u191-linux-x64.tar.gz /home/java
# 设置JAVA_HOME
ENV JAVA_HOME /home/java/jdk1.8.0_191
ENV PATH $PATH:$JAVA_HOME/bin
# 安装lsof命令,用于应用诊断
RUN yum update -y && yum install -y lsof
# 设置工作空间,用于部署应用。可自定义。探针会部署在应用的平级目录中
ENV APP_HOME /home/app
# 设置jar包名,用于jar包拷贝。如provider.jar。
ENV JAR_NAME {BMS_JAR_NAME}
# 安装探针包, 用于应用监控
ADD emcprobe.tar.gz $APP_HOME/..
# 安装应用程序包
COPY start.sh ${APP_HOME}/bin/
COPY ${JAR_NAME} ${APP_HOME}/lib/
# 配置工作目录
WORKDIR ${APP_HOME}
# 启动应用
CMD ["/bin/bash", "./bin/start.sh"]

注意:{BMS_JAR_NAME} 替换为需要部署的程序包的名称。

Dockerfile中应用路径可以自定义,监控探针则会部署在应用的平级目录。例如,应用路径默认为/home/app,则监控探针路径为/home/emcprobe。因此,请不要使用'/'做为应用的根目录。 start.sh为应用的启动脚本,该脚本包含反注册逻辑且还会调用监控探针的启动脚本。建议参考此脚本完成自己的启动脚本编写,或者直接使用该脚本,可以快速接入。start.sh脚本需和Dockerfile文件放置在同一目录下。start.sh脚本参考内容如下:

#!/bin/bash
# 用于在注册中心下线服务,若移除可能会导致服务下线延迟
trap "{ stop; sleep 0.5; exit 255; }" EXIT
# 用于应用监控
export EM_APP_HOME=${APP_HOME}
export PID_FILE=${EM_APP_HOME}/log/instance.pid
cd ${EM_APP_HOME}
# 应用启动逻辑
function start_app(){
    mkdir -p ${EM_APP_HOME}/log/
    # 应用的启动参数用户可自定义。启动后需要将pid写入文件以使用监控功能
    $JAVA_HOME/bin/java -jar ${EM_APP_HOME}/lib/${JAR_NAME} &
    echo $! > ${PID_FILE}
}

# 该方法为具体的服务下线逻辑
function stop(){
    echo "start to kill user process"
    if [ -f ${EM_APP_HOME}/log/instance.pid ]; then
        ps aux | awk -vpid=$(cat ${PID_FILE}) '$2==pid {print}' | grep $(cat ${PID_FILE}) &> /dev/null
        if [ $? -ne 0 ]; then
            echo "already stopped!"
            return
        fi
        echo  "stopping process "
        kill $(cat ${PID_FILE})

        for ((i=0;i<40;i++)); do
            if [ $i -eq 30 ]; then
                kill -9 $(cat ${PID_FILE})
            fi
            ps aux | awk -vpid=$(cat ${PID_FILE}) '$2==pid {print}' | grep $(cat ${PID_FILE}) &> /dev/null
            if [ $? -eq 0 ]; then
                echo -n .
                sleep 0.5
            else
                echo " [done]!"
                rm ${EM_APP_HOME}/log/instance.pid
                break
            fi
        done
    fi
}
# 启动应用
start_app
# 启动监控探针
cd ${EM_APP_HOME}/../emcprobe
bash ./bin/start.sh

使用Dockerfile创建镜像

在Dockerfile所在的目录(/home/appimage)执行docker build命令,创建镜像:

docker build -t hub.baidubce.com/[namespace]/[ImageName]:[镜像版本] .

namespace为环境准备中创建的命名空间的名称;ImageName由用户指定所创建镜像的名称;

注意,命令后的 “.”

创建结束后,可以通过docker image ls 或者 docker images命令查看镜像是否创建:

docker image ls
docker images

推送镜像到镜像仓库

镜像制作完成后,将制作的镜像推送到百度云镜像仓库:

docker push hub.baidubce.com/[namespace]/[ImageName]:[镜像版本]

镜像制作与推送完成后,即可在CNAP平台上进行部署。

三、历史版本


2020-9-08 2.2.0.2 最新版本

  • 优化trace消息生成: 去除微服务框架相关心跳、拉取配置请求、spring注解相关插件 的trace消息
  • 支持全新的拓扑展示,适配http和rpc调用场景
  • 修复新老版本探针兼容问题
环境类型 说明 镜像地址
centos7.1jdk8 centos7.1预装jdk8 hub.baidubce.com/cnap-public/microservice-springcloud:probe2.2.0.2_centos7.1_java8
ubuntu18.04jdk8 ubuntu18.04预装jdk8 hub.baidubce.com/cnap-public/microservice-springcloud:probe2.2.0.2_ubuntu18.04_java8
监控探针包 支持监控信息的展示 emcprobe-2-2-0-2.tar.gz

2020-6-5 2.1.1.2

  • 新增okhttp3 插件
环境类型 说明 镜像地址
centos7.1jdk8 centos7.1预装jdk8 hub.baidubce.com/cnap-public/microservice-springcloud:probe2.1.1.2_centos7.1_java8
ubuntu18.04jdk8 ubuntu18.04预装jdk8 hub.baidubce.com/cnap-public/microservice-springcloud:probe2.1.1.2_ubuntu18.04_java8
监控探针包 支持监控信息的展示 emcprobe-2-1-1-2.tar.gz
相似文档
  • 准备工作: 开发环境中下载Maven并完成环境配置。 开发环境中安装JDK1.8并完成环境配置(目前仅支持1.8版本)。 目前仅支持与天合微服务平台结合使用,请参照"Spring-Cloud-应用接入"文档进行接入。 将分布式事务相关的jar包安装到开发环境的Maven库中:下载事务依赖包,并按照压缩包中的README说明进行安装。
  • 准备工作: 开发环境中下载 Maven 并完成环境配置。 开发环境中安装 JDK 1.8 并完成环境配置(目前项目仅支持 1.8)。 创建 demo 服务: 1. 创建 config-demo 工程: 创建一个 Maven 工程,命名为 config-demo,JDK 选择 1.8 版本。 2. 修改 pom 文件,添加 Spring Cloud 和配置中心客户端依赖。
  • 准备工作: 服务网格(Service Mesh)是致力于解决服务间通讯的基础设施层,用于处理服务间通讯。Service Mesh 通常是通过一组轻量级网络代理(Sidecar proxy),与应用程序代码部署在一起来实现,而无需感知应用程序本身。
  • 轻量级注册中心主要为开发者提供本地轻量级注册中心服务,为开发者提供在开发、联调、测试阶段的服务注册、发现等功能; 前提条件: 在使用轻量级注册中心前,请确保: 环境安装JDK1.8并完成环境配置; 确保端口8600、8500、8301、8302和8300端口未被占用;
  • 百度智能云容器引擎(Cloud Container Engine,即CCE)是高度可扩展的高性能容器管理服务,您可以在托管的云服务器实例集群上轻松运行应用程序。使用该服务,您将无需安装、运维、扩展您的集群管理基础设施,只需进行简单的API调用,便可启动和停止Docker应用程序,查询集群的完整状态,以及使用各种云服务。您可以根据您的资源需求和可用性要求在您的集群中部署容器,满足业务或应用程序的特定要求。
官方微信
联系客服
400-826-7010
7x24小时客服热线
分享
  • QQ好友
  • QQ空间
  • 微信
  • 微博
返回顶部