Docker-compse启动kafka+zookeeper
一、 拉取镜像
文件目录结构
- zookeeper
- data
- docker-compose.yaml
- kafka
- docker-compose.yaml
- kafka-logs
可到官网选择自己需要的版本,docker官网地址:https://hub.docker.com/
docker pull docker.io/zookeeper:3.6.1
docker pull docker.io/wurstmeister/kafka: 2.12-2.5.0
二、 编写docker-compose.yaml文件
-
编写zookeeper的文件
vim docker-compose.yaml version: "3" services: zookeeper: image: docker.io/zookeeper:3.6.1 volumes: - ./data:/data #数据挂载目录 ports: - 2181:2181 #映射端口,使外部发现服务
-
编写kafka的文件
vim docker-compose.yamlvim docker-compose.yaml version: "3" services: kafka: image: docker.io/wurstmeister/kafka:2.12-2.5.0 volumes: - ../kafka-logs:/kafka #挂载目录 ports: - 9092:9092 #映射端口 environment: KAFKA_BROKER_ID: 0 #设置broker的id KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://localhost:9092 #Kafka代理的可用地址列表 KAFKA_CREATE_TOPICS: "test:1:1" #创建一个名为test的topic KAFKA_ZOOKEEPER_CONNECT: xx.xx.xx.176:2181 #连接zookeeper地址,xx.xx.xx.176为主机IP地址 KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092 #代理将侦听传入连接的地址列表,0.0.0.0表示所有地址都可监听 ALLOW_PLAINTEXT_LISTENER: "true" #允许使用PLAINTEXT侦听器。
三、 启动zookeeper和kafka
- 启动
cd zookeeper
docker-compose up -d
cd kafka
docker-compose up -d
查看容器运行状态:docker ps -a
启动kafka后,会连接到zookeeper,此时zookeeper会打印连接成功日志
docker logs -f kafka_zookeeper_1
- 验证是否启动成功
- 进入kafka容器中,进入kafka-console-producer.sh文件所在目录下(不知道文件目录可查找),运行监听topic=test是否有消息发送,–bootstrap-server为kafka服务消息监听地址
查找文件kafka-console-producer.sh:docker exec -it kafka_kafka_1 /bin/bash find / -name kafka-console-producer.sh cd /opt/kafka_2.12-2.5.0/bin/ kafka-console-consumer.sh --bootstrap-server xx.xx.xx.176:9092 --topic test --from-beginning
- 新打开一个窗口,再次进入kafka容器中,运行topic=test发送消息,查看接收端是否有消息,若成功接收消息,则kafka接收成功
docker exec -it kafka_kafka_1 /bin/bash cd /opt/kafka_2.12-2.5.0/bin/ kafka-console-producer.sh --broker-list xx.xx.xx.176:9092 --topic test