Docker下的Kafka学习之一:制作集群用的镜像文件
来源:互联网 发布:三国志10武将资料数据 编辑:程序博客网 时间:2024/05/22 15:21
尽管之前写过《Docker下kafka学习,三部曲》系列,但是单机版的入门练习并不满足实际工作的需要,从本章起,我们一起来研究和探索Kafka这个优秀的异步消息系统,为实际工作积累更多的实战经验。
从镜像制作开始
本章我们一起把kafka集群用到的镜像文件做出来,后续的实践都用这个镜像来进行;
功能梳理
这个镜像能提供哪些功能呢?
1. 可以ssh登录,这是为了后续操作方便;
2. jdk 1.8.0_144版本,因为zookeeper需要运行在jvm;
3. zookeeper-3.4.6;
4. kafka_2.9.2-0.8.1;
5. 把kafka_2.9.2-0.8.1/bin 加入到PATH中,这是为了后续执行kafka-topics.sh、kafka-console-producer.sh等命令时方便;
构造Dockerfile前准备的材料
本次构造Dockerfile所需的所有材料我已经上传到github上了,地址是:git@github.com:zq2599/kafka_2.9.2-0.8.1-zookeeper-3.4.6.git,如下图:
这里简单介绍一下这些材料:
1. jdk安装文件:linux版的jdk1.8文件超过了一百兆,超过了github单个文件50兆的限制,所以在linux或者mac上执行split -b 50m jdk-8u144-linux-x64.rpm jdkrpm-命令可以将此文件分割成小文件,如下图:
如果您手里只有windows,可以在docker上启动一个linux容器,启动的时候用-v创建文件映射,这样就能在这个linux容器里面分割并同步到windows上了;
2. zookeeper-3.4.6,为了用了起来方便,我将压缩包解压开了,并且在conf目录下创建了zoo.cfg文件,里面的内容和zoo_sample.cfg内容一样,然后改了dataDir的配置,如下图红框所示:
3. kafka_2.9.2-0.8.1.tgz,官方下载的;
Dockerfile文件内容
Dockerfile的内容如下所示,执行的是设置环境变量、安装jdk、复制zookeeper,复制解压kafka等,详细说明请看每个命令的注释部分:
# Docker image of kafka cluster# VERSION 0.0.1# Author: bolingcavalry#基础镜像使用kinogmt/centos-ssh:6.7,这里面已经装好了ssh,密码是passwordFROM kinogmt/centos-ssh:6.7#作者MAINTAINER BolingCavalry <zq2599@gmail.com>#定义工作目录ENV WORK_PATH /usr/local/work#定义日志目录ENV LOG_PATH /usr/local/work/log#定义zookeeper的Data目录ENV ZK_DATA_PATH $WORK_PATH/zkdata#定义zookeeper文件夹名称ENV ZK_PACKAGE_NAME zookeeper-3.4.6#定义kafka文件夹名称ENV KAFKA_PACKAGE_NAME kafka_2.9.2-0.8.1#将kafka的bin目录加入PATHENV PATH $WORK_PATH/$KAFKA_PACKAGE_NAME/bin:$PATH#定义jdk1.8的文件夹ENV JDK_PACKAGE_FILE jdk1.8.0_144#定义jdk1.8的文件名ENV JDK_RPM_FILE jdk-8u144-linux-x64.rpm#创建工作目录RUN mkdir -p $WORK_PATH#创建日志目录RUN mkdir -p $LOG_PATH#创建zookeeper的Data目录RUN mkdir -p $ZK_DATA_PATH#把分割过的jdk1.8安装文件复制到工作目录COPY ./jdkrpm-* $WORK_PATH/#用本地分割过的文件恢复原有的jdk1.8的安装文件RUN cat $WORK_PATH/jdkrpm-* > $WORK_PATH/$JDK_RPM_FILE#本地安装jdk1.8,如果不加后面的yum clean all,就会报错:Rpmdb checksum is invalidRUN yum -y localinstall $WORK_PATH/$JDK_RPM_FILE; yum clean all#删除jdk分割文件RUN rm $WORK_PATH/jdkrpm-*#删除jdk安装包文件RUN rm $WORK_PATH/$JDK_RPM_FILE#把kafka压缩文件复制到工作目录COPY ./$KAFKA_PACKAGE_NAME.tgz $WORK_PATH/#解压缩RUN tar -xvf $WORK_PATH/$KAFKA_PACKAGE_NAME.tgz -C $WORK_PATH/#删除压缩文件RUN rm $WORK_PATH/$KAFKA_PACKAGE_NAME.tgz#把kafka压缩文件复制到工作目录COPY ./$ZK_PACKAGE_NAME $WORK_PATH/$ZK_PACKAGE_NAME
构建镜像
将之前准备好的材料和Dockerfile文件放在同一个目录下,如下图:
打开命令行,进入Dockerfile所在目录,执行如下命令:
docker build -t bolingcavalry/ssh-kafka292081-zk346:0.0.1 .
ssh-kafka292081-zk346是我给这个镜像起的名字,您可以按照自己想要修改,稍后执行完毕,输入docker images命令就能看见最新构建的镜像文件了,如下图:
在hub.docker.com上注册过的读者还可以执行以下命令将镜像push到hub.docker.com上去,这样其他用户也可以用到您制作的镜像了:
docker push bolingcavalry/ssh-kafka292081-zk346:0.0.1
注意,如果要push到hub.docker.com上去,镜像的名称必须是您的账号开头加”/”,例如这里的”bolingcavalry/ssh-kafka292081-zk346”,其中bolingcavalry就是我在hub.docker.com上的账号;
至此,kafka集群所需的镜像文件已经制作完毕,接下来的章节,我们会实践在Docker下搭建kafka集群环境;
- Docker下的Kafka学习之一:制作集群用的镜像文件
- 制作mongodb的Docker镜像文件
- Docker下的Kafka学习之二:搭建集群环境
- Docker下的Kafka学习之二:搭建集群环境
- ubuntu下制作hyperledger的docker镜像
- Docker下的Kafka学习之三:集群环境下的java开发
- 制作mysql的docker镜像
- 制作自己的Docker镜像
- 制作ubuntu16.04的docker镜像
- 制作ubuntu16.04的docker镜像
- Docker基础镜像的制作
- Docker学习系列从零开始之基于SSH镜像制作mysql的镜像【六】
- Docker下kafka学习,三部曲之一:极速体验kafka
- Docker实战(二):制作自己的Docker镜像
- Docker实战(二):制作自己的Docker镜像
- Arukas Docker 制作自己的镜像---Docker hub
- Docker实战(二):制作自己的Docker镜像
- Kafka学习之:Centos 下Kafka集群的安装
- ODOO技术在教育行业软件上的应用
- 源码解读之调换字符串顺序——StringBuilder reverse()
- 【安全牛学习笔记】拒绝服务介绍、DoS分类、个人DoS分类方法
- 详解正向代理和反向代理
- PicrossMadness
- Docker下的Kafka学习之一:制作集群用的镜像文件
- Nodejs学习(六)--异步流控制
- 数据库
- LeetCode Exercise 5: Trapping Rain Water
- 7-9 龟兔赛跑(20 分)
- 【Codeforces Round #440 (Div. 2) C】 Maximum splitting
- 串口工具minicom的使用方法
- Maven-环境搭建以及建立Maven项目
- 3.1.1多线程通讯(等待通知机制)