参考博文:Docker案例:MacOS搭建单节点Kafka服务_Crane的博客-CSDN博客
拉取镜像$ docker pull zookeeper $ docker pull wurstmeister/kafka $ docker images REPOSITORY TAG IMAGE ID CREATED SIZE zookeeper latest ab3f783cf9c4 5 days ago 278MB wurstmeister/kafka latest 11142da99906 3 weeks ago 505MB创建容器
Kafka依赖Zookeeper,这里使用docker-compose创建和启动容器。
需要创建docker-compose.yml文件,使用官方zookeeper镜像创建zookeeper容器,并与kafka容器建立关联。
(因宿主机有搭建dnmp环境,dnmp目录下存在docker-compose.yml文件,这里新建一个kafka目录,目录下新建docker-compose.yml文件)
docker-compose.yml文件内容如下:
version: '2'
services:
zk:
image: zookeeper
restart: unless-stopped
hostname: zk
ports:
- "2181:2181"
container_name: zookeeper
kfk:
image: wurstmeister/kafka
ports:
- "9092:9092"
environment:
KAFKA_ADVERTISED_HOST_NAME: localhost
KAFKA_ZOOKEEPER_CONNECT: "zk:2181"
KAFKA_BROKER_ID: 1
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
depends_on:
- zk
container_name: kafka
启动容器
进入docker-compose.yml文件所在目录(即cd kafka目录),执行下面命令启动容器:
#不清楚docker-compose up -d启动全部服务是否对dnmp中启动的服务造成影响,因此单独启动zk和kfk服务 #命令执行成功后,下边是执行日志,实时追踪展示。关闭此终端窗口并不影响生产者和消费者生产消费 $ docker-compose up zk kfk Creating network "kafka_default" with the default driver Creating zookeeper ... done Creating kafka ... done Attaching to zookeeper, kafka zookeeper | ZooKeeper JMX enabled by default zookeeper | Using config: /conf/zoo.cfg kafka | [Configuring] 'port' in '/opt/kafka/config/server.properties' kafka | [Configuring] 'advertised.host.name' in '/opt/kafka/config/server.properties' kafka | Excluding KAFKA_HOME from broker config
验证安装结果
打开新的终端窗口,查看kafka及zookeeper版本,命令如下:
$ docker exec -it kafka find / -name *kafka_* | head -1 /opt/kafka_2.13-2.7.1 $ docker exec -it zookeeper pwd /apache-zookeeper-3.7.0-bin
命令行方式使用kafka
创建topic
创建topic
创建一个名为crane,分区数量为3,副本数量为1的主题。
#新建topic 表示命令没有执行完,回车继续输入命令 #Created新建成功 $ docker exec kafka > kafka-topics.sh > --create --topic crane > --partitions 3 > --zookeeper zookeeper:2181 > --replication-factor 1 Created topic crane. #查看topic 表示命令没有执行完,回车继续输入命令 #可以查看到新建的topic:crane $ docker exec kafka > kafka-topics.sh --list > --zookeeper zookeeper:2181 crane创建生产者及消费者
创建生产者
创建主题为crane的生产者。
(可看到>符号,即生产者在等待消息输入)
$ docker exec -it kafka > kafka-console-producer.sh > --topic crane > --broker-list kafka:9092 >创建消费者
另外开一个终端窗口,创建监听主题为crane的消费者。
$ docker exec kafka > kafka-console-consumer.sh > --topic crane > --bootstrap-server kafka:9092生产者消费者交互
在生产者窗口下随便输入信息,回车,则生产者往Kafka中发送了输入的消息;
在消费者窗口中可看到消费的消息。



