Docker下的Kafka学习之一:制作集群用的镜像文件

尽管之前写过《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,密码是password
FROM 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目录加入PATH
ENV 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 invalid
RUN 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集群环境;

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏闵开慧

ubuntu命令大全

查看软件xxx安装内容 #dpkg -L xxx 查找软件 #apt-cache search 正则表达式 查找文件属于哪个包 #dpkg -S fil...

3015
来自专栏林德熙的博客

git 使用 VisualStudio 比较分支更改

有时候需要比较两个分支的不同,这时如果提交到 github ,那么默认就可以看到。但是这时因为没有ide的高亮或者其他的功能,看起来觉得不好。 默认的 Visu...

442
来自专栏MoeLove

CentOS7上安装Python3.6

当前最新的 CentOS 7.3 默认安装的是 Python 2 ,并且默认的官方 yum 源中不提供 Python 3 的安装包。有些用户想要升级使用 Pyt...

892
来自专栏Java技术分享

Git学习之图形用户界面客户端SmartGit结合Eclipse开发Android总结

1、GitHub官网创建仓库并找到克隆的仓库地址,如: https://github.com/PillarChen/MyFirstGit.git ? ? ? 2...

1886
来自专栏Ryan Miao

在centos7中添加一个新用户,并授权

前言 笔记本装了一个centos,想要让别人也可以登录访问,用自己的账号确实不太好,于是准备新建一个用户给他。 创建新用户 创建一个用户名为:zhangbiao...

2828
来自专栏用户画像

idea new project from github

on update action 选择update classes and resources 可实现热部署,修改代码后点击刷新按钮,即可生效

624
来自专栏Hadoop实操

如何在CDH5.13中安装CDSW1.2

Cloudera前一段时间发布了CDH5.13版本,5.13的新功能可以参考前一篇文章《CDH5.13和CM5.13的新功能》,在CDH5.13版本以后支持CD...

4265
来自专栏云计算教程系列

如何在Ubuntu上创建Sudo用户[快速入门]

该sudo命令提供了一种机制,用于向普通用户授予通常仅对root用户可用的管理员权限。本指南将向您展示在Ubuntu上创建具有sudo访问权限的新用户的最简单方...

560
来自专栏酷玩时刻

Centos 更改MySQL5.7数据库目录位置

Centos7.3 安装Mysql5.7并修改初始密码 基于 CentOS Mysql 安装与主从同步配置详解

782
来自专栏还债之路

Centos系统下载和安装

下载合适的镜像: (我们这以下载Centos7.5版本为例) 首先我们先访问Centos的官方网站,在国内访问速度可能很慢或者直接访问不上。我这个地方使用×××...

1014

扫码关注云+社区