docker run -d --restart=always --name zookeeper -p 2181:2181 -t wurstmeister/zookeeper
docker run -d --name kafka \
-p 9092:9092 \
-e KAFKA_BROKER_ID=0 \
--env KAFKA_HEAP_OPTS=-Xmx256M \
--env KAFKA_HEAP_OPTS=-Xms128M \
-e KAFKA_ZOOKEEPER_CONNECT=172.28.99.11:2181 \
-e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://47.92.110.110:9092 \
-e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 \
wurstmeister/kafka:2.13-2.7.0
172.28.99.11 是内网IP
47.92.125.10 是外网IP,把kafka的地址端口注册给zookeeper,如果是本地远程访问要改成外网IP,比如Java程序访问出现无法连接。
#进入容器内部,创建topic
docker exec -it 容器ID /bin/bash
cd /opt/kafka/bin
ls
查看有哪些topic
./kafka-topics.sh --list --zookeeper 172.28.99.11:2181
创建topic
./kafka-topics.sh --create --zookeeper 172.28.99.11:2181 --replication-factor 1 --partitions 1 --topic test-topic
创建生产者发送消息
./kafka-console-producer.sh --broker-list 172.28.99.11:9092 --topic test-topic
再开一个窗口运行消费者
docker exec -it 容器ID /bin/bash
cd /opt/kafka/bin
./kafka-console-consumer.sh --bootstrap-server 172.28.99.11:9092 --from-beginning --topic test-topic
在生产者发送消息,消费者能收到消息