首先拉取zookeeper、kafka镜像
docker pull wurstmeister/zookeeper
docker pull wurstmeister/kafka
启动zookeeper
docker run -d --name zookeeper --restart=always --publish 2181:2181 --volume /etc/localtime:/etc/localtime wurstmeister/zookeeper
启动kafka
docker run -d --name kafka --restart always --publish 9092:9092 --link zookeeper --env KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181 --env KAFKA_ADVERTISED_HOST_NAME=192.168.30.53 --env KAFKA_ADVERTISED_PORT=9092 --volume /etc/localtime:/etc/localtime wurstmeister/kafka
测试
docker exec -it kafka /bin/bash
#先用消费者监听
cd /opt/kafka_2.13-2.6.0/bin/
./kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic mytopic --from-beginning
使用生产者发送
./kafka-console-producer.sh --broker-list localhost:9092 --topic mytopic
>hello_wold!
使用compos部署kafka集群
compose安装:
$ sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
部署:
mkdir kafka
vim docker-compose.yml
version: '2'
services:
zookeeper:
restart: always
image: wurstmeister/zookeeper
ports:
- "2181:2181"
kafka:
restart: always
image: wurstmeister/kafka
ports:
- "9092"
environment:
KAFKA_ADVERTISED_HOST_NAME: 192.168.30.53
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /etc/localtime:/etc/localtime
启动两个节点的kafka集群
docker-compose up -d --scale kafka=2 本机启动一个有两个节点的 Kafka 集群