docker镜像制作案例——关于kafka-eagle-2.0.8(EFAK)版本的kafka管理工具实现镜像制作及发布

Posted 北溟溟

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了docker镜像制作案例——关于kafka-eagle-2.0.8(EFAK)版本的kafka管理工具实现镜像制作及发布相关的知识,希望对你有一定的参考价值。

前言

本节我们主要介绍一款kafka集群常用的管理工具kafka-eagle,实现kafka-eagle的docker镜像制作及发布,由于其官方没有提供docker镜像,我们自行构建一个镜像并发布运行。以下是其镜像制作的详细过程。效果如下:

正文

  • 下载kafka-eagle软件包并上传到centos服务器

ps:本文默认用户已经搭建好了docker的运行环境。

①官网下载地址:Download - EFAK

②上传到服务器

 

  • 使用vi编辑器创建镜像脚本Dockerfile

创建Dockerfile文件

#kafka-eagle的Dockerfile镜像脚本

#引入依赖的java环境
FROM openjdk:8-alpine3.9

#环境变量配置
ENV KE_HOME=/opt/kafka-eagle

ENV EAGLE_VERSION=2.0.8

CMD ["/bin/bash"]

#工作目录
WORKDIR /opt/kafka-eagle

#作者信息
MAINTAINER yan.p "1551908978@qq.com"

#拷贝压缩包到临时目录
COPY kafka-eagle-bin-${EAGLE_VERSION}.tar.gz  /tmp

#将上传的kafka-eagle压缩包解压放入镜像中并授权
RUN mkdir /opt/kafka-eagle -p && cd /opt && \\
    tar zxvf /tmp/kafka-eagle-bin-${EAGLE_VERSION}.tar.gz -C kafka-eagle --strip-components 1 && rm -f /tmp/kafka-eagle-bin-${EAGLE_VERSION}.tar.gz && \\
    cd kafka-eagle;tar zxvf efak-web-${EAGLE_VERSION}-bin.tar.gz --strip-components 1 && rm -f efak-web-${EAGLE_VERSION}-bin.tar.gz  && \\
    chmod +x /opt/kafka-eagle/bin/ke.sh && \\
    mkdir -p /hadoop/kafka-eagle/db

#将kafka-eagle的启动文件拷贝到镜像中
COPY entrypoint.sh /opt/kafka-eagle/bin

#给启动文件授权
RUN chmod +x /opt/kafka-eagle/bin/entrypoint.sh

#暴露端口
EXPOSE 8048 8080

#镜像的启动命令
CMD ["sh","/opt/kafka-eagle/bin/entrypoint.sh"]

  • 使用vi编辑器创建镜像启动脚本entrypoint.sh

创建entrypoint.sh文件

#!/usr/bin

#kafka-eagle项目启动的命令
sh /opt/kafka-eagle/bin/ke.sh start

tail -f /dev/null

  • 使用vi编辑器新建kafka-eagle的配置文件system-config.properties

创建kafka-eagle的配置文件system-config.properties

ps:将系统默认的配置文件复制一份修改

######################################
# multi zookeeper & kafka cluster list
# Settings prefixed with 'kafka.eagle.' will be deprecated, use 'efak.' instead
######################################
efak.zk.cluster.alias=cluster1
cluster1.zk.list=192.168.56.10:2181,192.168.56.10:2182,192.168.56.10:2183

######################################
# zookeeper enable acl
######################################
cluster1.zk.acl.enable=false
cluster1.zk.acl.schema=digest
cluster1.zk.acl.username=test
cluster1.zk.acl.password=test123

######################################
# broker size online list
######################################
cluster1.efak.broker.size=20

######################################
# zk client thread limit
######################################
kafka.zk.limit.size=32

######################################
# EFAK webui port
######################################
efak.webui.port=8048

######################################
# kafka jmx acl and ssl authenticate
######################################
cluster1.efak.jmx.acl=false
cluster1.efak.jmx.user=keadmin
cluster1.efak.jmx.password=keadmin123
cluster1.efak.jmx.ssl=false
cluster1.efak.jmx.truststore.location=/data/ssl/certificates/kafka.truststore
cluster1.efak.jmx.truststore.password=ke123456

######################################
# kafka offset storage
######################################
cluster1.efak.offset.storage=kafka

######################################
# kafka jmx uri
######################################
cluster1.efak.jmx.uri=service:jmx:rmi:///jndi/rmi://%s/jmxrmi

######################################
# kafka metrics, 15 days by default
######################################
efak.metrics.charts=true
efak.metrics.retain=15

######################################
# kafka sql topic records max
######################################
efak.sql.topic.records.max=5000
efak.sql.topic.preview.records.max=10

######################################
# delete kafka topic token
######################################
efak.topic.token=keadmin

######################################
# kafka sasl authenticate
######################################
cluster1.efak.sasl.enable=false
cluster1.efak.sasl.protocol=SASL_PLAINTEXT
cluster1.efak.sasl.mechanism=SCRAM-SHA-256
cluster1.efak.sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required username="kafka" password="kafka-eagle";
cluster1.efak.sasl.client.id=
cluster1.efak.blacklist.topics=
cluster1.efak.sasl.cgroup.enable=false
cluster1.efak.sasl.cgroup.topics=


######################################
# kafka sqlite jdbc driver address
######################################
efak.driver=org.sqlite.JDBC
efak.url=jdbc:sqlite:/hadoop/kafka-eagle/db/ke.db
efak.username=root
efak.password=www.kafka-eagle.org

######################################
# kafka mysql jdbc driver address
######################################
#efak.driver=com.mysql.cj.jdbc.Driver
#efak.url=jdbc:mysql://192.168.56.10:3306/ke?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull
#efak.username=root
#efak.password=root

配置为kafka所属的的zookeeper集群地址 

 配置数据库地址

  •  打包kafka-eagle镜像

打包命令

docker build -f Dockerfile -t efak:2.0.8 .

 查看制作好的镜像

命令:docker images

  • 启动 kafka-eagle容器

①命令:

docker run --name efak -p 8048:8048 -v /usr/local/bin/kafka-eagle/system-config.properties:/opt/kafka-eagle/conf/system-config.properties -d efak:2.0.8

-p :端口映射

-v :文件映射

-d :后台启动

②验证:

访问地址:http://ip:port/

  •  dockerhub登录

  •  镜像修改tag

镜像打标签命令:

docker tag 25d2cdcd1b57 ydockerp/efak:2.0.8

  

  •  上传镜像到dockerhub

命令:

docker push ydockerp/efak:2.0.8

结语

ok,本节内容到此就结束了,我们下期见。。。

以上是关于docker镜像制作案例——关于kafka-eagle-2.0.8(EFAK)版本的kafka管理工具实现镜像制作及发布的主要内容,如果未能解决你的问题,请参考以下文章

关于制作Docker镜像?| Dockerfile快速开始

47-Docker-Dockerfile镜像创建自动化生产案例

Docker学习笔记 —— 镜像制作(Dockerfile)

Docker学习笔记 —— 镜像制作(Dockerfile)

怎么在服务器上制作docker镜像

09-Docker-镜像制作