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 :后台启动
②验证:
- 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管理工具实现镜像制作及发布的主要内容,如果未能解决你的问题,请参考以下文章
47-Docker-Dockerfile镜像创建自动化生产案例
Docker学习笔记 —— 镜像制作(Dockerfile)