kafka 的 Docker 镜像使用说明 (wurstmeister/kafka)
欢迎访问我的 GitHub
这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos
在 hub.docker.com 网站上,Star 最多的 kafka 镜像是 wurstmeister/kafka,今天一起来实践这个镜像,使用此镜像搭建 kafka 环境,并且生产和消费消息;
实战环境
操作系统:CentOS7
Docker:17.03.2-ce
docker-compose:1.23.2
编写 docker-compose.yml
wurstmeister 在 github 开源了一份 docker-compose.yml,在使用中遇到以下两个问题:
kafka 的配置使用了参数"build: .",因此启动时会在本地构建镜像,构建过程中有的网站访问超时,导致镜像构建失败;
docker-compose.yml 中环境变量的配置,在消费消息时会出现异常"LEADER_NOT_AVAILABLE";
针对上述问题,我对原有的 docker-compose.yml 做了修改和调整,本次实战用到的 docker-compose.yml 内容如下:
上面有个数据卷参数**/var/run/docker.sock**,这是个很重要的参数,使得容器内可以执行 docker ps、docker port 等命令,得到的结果和在宿主机上执行一样,详情请参考《docker的/var/run/docker.sock参数》。
启动 server
在 docker-compose.yml 所在的文件夹下,执行命令 docker-compose up -d,会先下载 zookeeper 和 kafka 的镜像,然后创建容器;
执行命令 docker ps,可见启动了一个 zookeeper 和一个 kafka 容器:
由上面的命令可知 kafka 容器名称是 kafka-docker_kafka_1,zookeeper 容器名称是 kafka-docker_zookeeper_1;
查看版本号
执行以下命令查看容器中的 kafka 版本号:
上述命令执行后,我这边控制台显示 kafka_2.11-0.11.0.3,这表示 Scala 的版本为 2.11,kafka 的版本是 0.11.0.3;
执行以下命令查看 zookeeper 版本:
上述命令执行后,我这边控制台显示**/opt/zookeeper-3.4.9**,这表示 zookeeper 的版本为 3.4.9;
扩展 broker
在 docker-compose.yml 所在的文件夹下,执行以下命令即可将 borker 总数从 1 个扩展到 4 个:
执行命令 docker ps,可见 kafka 容器已经扩展到 4 个:
接下来实战消息的生产和消费;
创建 topic
创建一个 topic,名为 topic001,4 个 partition,副本因子 2,执行以下命令即可:
执行以下命令查看刚刚创建的 topic,这次在容器 kafka-docker_kafka_3 上执行命令试试:
可见刚刚创建的 topic 可以被查到;
查看刚刚创建的 topic 的情况,borker 和副本情况一目了然,如下:
消费消息
执行如下命令,即可进入等待 topic 为 topic001 消息的状态:
目前还没有生产消息,因此控制台不会有内容输出,接下来尝试生产消息;
生产消息
打开一个新的窗口,执行如下命令,进入生产消息的命令行模式,注意不要漏掉参数"-it",我之前就是因为漏掉了参数"-it",导致生产的消息时虽然不提示异常,但是始终无法消费到消息:
现在已经进入了生产消息的命令行模式,输入一些字符串然后回车,再去消费消息的控制台窗口看看,已经有消息打印出来,说明消息的生产和消费都成功了;
至此,镜像 wurstmeister/kafka 的实战就完成了,在后续使用到 kafka 服务的时候,可以参考本次实战快速搭建 kafka 集群;
欢迎关注 InfoQ:程序员欣宸
版权声明: 本文为 InfoQ 作者【程序员欣宸】的原创文章。
原文链接:【http://xie.infoq.cn/article/9aca8523fdda21ccc71c8cd7b】。文章转载请联系作者。
评论