1、build dockerfile
kafka dockerfile
zookeeper dockerfile
2、镜像启动
//-h 指定hostname
sudo docker run -itd --name zookeeper -h zookeeper -p 2181:2181 jiankunking/zookeeper:3.4.6
//-h 指定hostname
//--link 容器可以通过link链接进行访问,这样就不需要指定ip了
sudo docker run -itd --name kafka -h kafka -p 9092:9092 --link zookeeper jiankunking/kafka:0.8.2.2
3、查看kafka、zookeeper端口是否已被监听
//kafka
lsof -i:9092
//zookeeper
lsof -i:2181
也可以进入kafka、zookeeper容器查看相应端口是否已经被监听。
4、启动kafka
//进入容器
sudo docker exec -it d1361270a323 /bin/bash
//切换目录
cd /opt/kafka/kafka_2.11-0.8.2.2/bin/
//创建topic
./kafka-topics.sh --create --topic test1 --zookeeper zookeeper:2181 --partitions 3 --replication-factor 1
如果提示:
/opt/kafka/kafka_2.11-0.8.2.2/bin/kafka-run-class.sh: line 155: exec: java: not found
则刷新配置文件:
source /root/.bash_profile
//再创建一个topic test2
./kafka-topics.sh --create --topic test2 --zookeeper zookeeper:2181 --partitions 3 --replication-factor 1
Created topic "test2".
//查看创建的topic信息
./kafka-topics.sh --zookeeper zookeeper:2181 --describe --topic test1
./kafka-topics.sh --zookeeper zookeeper:2181 --describe --topic test2
//查看topic列表
./kafka-topics.sh --list --zookeeper zookeeper:2181
启动kafka消费端:
./kafka-console-consumer.sh --zookeeper zookeeper:2181 --topic test1
再一个新的shell窗口,进入容器,启动kafka producer
./kafka-console-producer.sh --broker-list localhost:9092 --topic test1
启动后,在kafka producer中输入内容回车,kafka consumer就会收到了